Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/84: Рейтинг темы: голосов - 84, средняя оценка - 4.64
 Аватар для Nehemian
15 / 15 / 4
Регистрация: 27.12.2009
Сообщений: 93

Создание потоков через CreateThread

09.10.2010, 18:07. Показов 16135. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, Расскажите что такое потоки в Delphi, которые делаются с помощью команды createthread. И нафиг они нужны ??? пример покажите, а то заманался с учебниками, какой только хрени ни находил нормально показать никто не может.


*HELP* *HELP*
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2010, 18:07
Ответы с готовыми решениями:

Создание потока через CreateThread
Доброго времени суток! Помогите разобраться. Мне нужно создать поток с помощью WinAPI-функции CreateThread, но у меня никак не получается...

Создание потоков через пул
Здравствуйте, подскажите пожалуйста вот такое задание для создания потоков используйте пул вот код задачи для потока double x =...

Создание потоков Thread через цикл
Вот полный код программы,где через t задается условное количество выполнений циклов, которые погружают поток в сон, тоесть если я задам...

46
 Аватар для Nehemian
15 / 15 / 4
Регистрация: 27.12.2009
Сообщений: 93
22.10.2010, 15:27  [ТС]
Студворк — интернет-сервис помощи студентам
как результат вывести ???
присвоить чему то переменную n ???

Добавлено через 4 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  ID:Dword;
  ThreadHandle: THandle; n:integer;
 
implementation
 
 
 
procedure Inkrement(var n:integer);
var i:boolean;
   begin
    while i = true do
        n:=n+1;
    end;
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ThreadHandle:=createthread(nil,0,@Inkrement,@n,CREATE_SUSPENDED,ID);
ResumeThread(ThreadHandle);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
TerminateThread(ThreadHandle,n);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
n:=strtoint(edit1.text);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
edit2.Text:=inttostr(ThreadHandle);
end;
 
end.
Добавлено через 20 секунд
вот как получить результат

Добавлено через 4 минуты
как узнать что получилось ??? напиши конкретно
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
22.10.2010, 16:02
Nehemian, блин ты хоть раз читал про эти четыре функции для работы с потоками, смотрел что за параметры??? Это последнее чем я тебе помогаю, если не прочитаешь мануал...
Цитата Сообщение от Nehemian Посмотреть сообщение
edit2.Text:=inttostr(ThreadHandle);
вот какой нах хендл здесь??? хендл - идентификатор потока, а не возвращаемое значение!!!
Цитата Сообщение от Nehemian Посмотреть сообщение
TerminateThread(ThreadHandle,n);
а здесь зачем n ??? n-это переменная, а надо код завершения потока (обычно ноль)

PS "объяснять дереву современные технологии бессмысленно" ИМХО
0
 Аватар для Nehemian
15 / 15 / 4
Регистрация: 27.12.2009
Сообщений: 93
24.10.2010, 19:56  [ТС]
вот так еще сделал

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 // Thred:Thandle;
  Id:Dword;
  idThred,m: integer;
  Thred:  THandle;
 
implementation
procedure sed ;
var i:integer;
begin
  for i:=0 to 100  do
  form1.edit1.text:=inttostr(i);
end;
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
Thred:=createthread(nil,0,@Sed,nil,0,Id);
end;
 
end.
Добавлено через 58 секунд
создает поток и считает от 0 до 100, а подскажите как сделать несколько потоков ???

Добавлено через 22 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 // Thred:Thandle;
  Id:Dword;
  edTh,m: integer;
  Thred: array [0..100] of  THandle;
 
implementation
procedure sed ;
var i:integer;
begin
  for i:=0 to 3  do
  form1.memo1.lines.add(inttostr(i));
end;
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  for edTH:=0 to m do
    begin
  Thred[edTH]:=createthread(nil,0,@Sed,nil,0,Id);
    WaitForSingleObject(Thred[edTH],0);
    end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
m:=strtoint(edit2.text);
 
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
end;
 
end.

Теперь делает несколько потоков, в зависимости от заданного числа. Выводит не по порядку немножко. Как вывести по порядку подскажите ???
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
24.10.2010, 20:27
Цитата Сообщение от Vas-e-na Посмотреть сообщение
PS "объяснять дереву современные технологии бессмысленно" ИМХО
см выше
0
 Аватар для Nehemian
15 / 15 / 4
Регистрация: 27.12.2009
Сообщений: 93
08.11.2010, 14:12  [ТС]
Ды, я как бы не против, но задачку решить помогите

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
var n,Ed:integer;
Thred:array[0..255] of Thandle;
ID:Dword;
 
procedure Sed;
 begin
   writeln(ed);
 end;
 
begin
write('Kol-vo Potokov ');
n:=strtoint(paramstr(1));
writeln(n);
   for ed:=1 to т do
     begin
       Thred[ed]:=createthread(nil,0,@Sed,pointer(ed),CREATE_SUSPENDED,ID);
       ResumeThread(Thred[ed]);
       waitforsingleobject(Thred[ed],1000);
     end;
readln;
end.

надо чтобы потоки создавались в номральном порядке, а выводились в обратном. Я ничего умнее не придумал кроме как for downto но надо с помощью mutex или семафора Помогите
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
08.11.2010, 14:57
используйте поиск, я уже выкладывал пример семафора и мютекса https://www.cyberforum.ru/delp... post930668
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.04.2014, 07:07
Цитата Сообщение от flatgad Посмотреть сообщение
Delphi
1
var potok1,potok2:TThread;
А если мне в 5 потоков нужно, это 5 переменных создавать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2014, 07:07

Создание двух потоков, упорядоченных через переменную.
Создать 2 потока, которые кпордочиваются через переменную, 2 потока работают одновременно

Создание и завершение процессов и потоков. Приоритеты выполнения потоков
Здравствуйте. Буду очень раз если поможете понять,что конкретно нужно сделать в вот этом задании,пока особого представления о...

Вернуть значение функции, запущенной через CreateThread
У меня есть некоторая функция, которая через CreateProcess() запускается, но мне нужно как-то получать значение, которая она вычисляет...

Создание приложения, использующего функцию CreateThread для создания потока
Нужно создать проект консольного приложения, используя пример кода (см. ниже), использующего функцию CreateThread для создания потока....

Как быть с потоками, которые создаются через CreateThread?
Для синхронизации потока с основной формой используется Synchronize при работе с TThread. Как быть с потоками, которые создаются через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru