HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Delphi [Console App + TThread]
  #1  
Старый 19.10.2006, 19:33
qPhoenix
Banned
Регистрация: 15.12.2005
Сообщений: 95
С нами: 10738406

Репутация: 132
По умолчанию Delphi [Console App + TThread]

Собсно ламерский вопросец - можно ли, и как организовать многопоточность в консольном приложении?

в чем у меня лажа?...:

делаю так:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses Classes;

type
 Thread = class(TThread)
  procedure Execute; override;
 end;

procedure Thread.Execute;
begin
 writeln('lol');
end;

begin
 Thread.Create(false);
end.
Непашет...
Затем ради интереса проделываю аналогичное с использованием формы:
Код:
unit Unit1;

interface

uses Forms, StdCtrls, Classes, Controls;

type
 TForm1 = class(TForm)
  Label1: TLabel;
  procedure FormCreate(Sender: TObject);
 end;

 Thread = class(TThread)
  procedure Execute; override;
 end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Thread.Execute;
begin
 Form1.Label1.Caption:='lol';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Thread.Create(false);
end;

end.
Фсе гламурно пашет...

В чем грабли?
 
Ответить с цитированием

  #2  
Старый 19.10.2006, 22:05
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
С нами: 10653446

Репутация: 836


По умолчанию

Thread = class(TThread)
procedure Execute; override;
end;

когда создаешь класс, необходимо "создавать" класс... В пример тот же TStrings/TStringList/...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #3  
Старый 25.10.2006, 16:50
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами: 10943066

Репутация: 1236


По умолчанию

DWORD WINAPI threadfunc()
{
printf("lol");
Sleep(1000);
return 0;
}

void main()
{
HANDLE hthread;
hthread = CreateThread(...);

WaitForSingleObject(hthread, INFINITE);
}

можт результата не видишь потому что главный поток соскакивает до того как второй закончит исполнение. для этого WaitFor...
__________________


snow white world wide
 
Ответить с цитированием

  #4  
Старый 27.10.2006, 22:22
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
С нами: 10439609

Репутация: 71
По умолчанию

Ту сноу! вместо слип(1000) тоже можно использовать ВаитФоСинглОбжект с нулевым событием и задержкой на 1000. Это вроде меньше ресурсов жрет.
 
Ответить с цитированием

  #5  
Старый 27.10.2006, 22:30
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
С нами: 10994966

Репутация: 1332


По умолчанию

2da_ff эээ какие там еще ресурсы сжираются?
 
Ответить с цитированием

  #6  
Старый 27.10.2006, 22:48
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
С нами: 10516826

Репутация: 3742


По умолчанию

да.. WaitSingleObject() следит за всеми трэдами.. и никакой слип не нужен )
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #7  
Старый 27.10.2006, 22:55
gemaglabin
Banned
Регистрация: 01.08.2006
Сообщений: 725
С нами: 10408706

Репутация: 4451


По умолчанию

Вот этот код стопроцентно работает

PHP код:
program Project1;

{
$APPTYPE CONSOLE}

uses
  Classes
,StdCtrls;

type
 Thread 
= class(TThread)
  
procedure Executeoverride;
 
end;

procedure Thread.Execute;
begin
 writeln
('lol');
end;

begin
 Thread
.Create(false);
end
Скриншот прилагается - возможно ты не правильно компилируешь,попробуй cntrl+F9 ( компиляция без запуска ) %)

 
Ответить с цитированием

  #8  
Старый 27.10.2006, 23:22
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
С нами: 10994966

Репутация: 1332


По умолчанию

2гема нахрена для этого еще класс этот дурацкий использовать? у снега все понятнее, проще и более того правильнее)
 
Ответить с цитированием

  #9  
Старый 30.10.2006, 15:51
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами: 10943066

Репутация: 1236


По умолчанию

2da_ff: прочти этот fucking manual, и осмысли предназначение Sleep() и WaitForSingleObject()
__________________


snow white world wide
 
Ответить с цитированием

  #10  
Старый 19.10.2006, 19:48
qPhoenix
Banned
Регистрация: 15.12.2005
Сообщений: 95
С нами: 10738406

Репутация: 132
По умолчанию

Не катит...
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.