imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 23.03.2005, 18:46     # 1
Kuzmich
:::AAK:::
 
Аватар для Kuzmich
 
Регистрация: 25.01.2004
Сообщения: 915

Kuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех Гуру
Функции Resume- и SuspendThread

Строятся параллельно две синусоиды (Delphi)...

Два потока:
procedure StartThread1;
var thrid:DWord;
begin th1:=CreateThread(nil,0,@thr1,nil,0,thrid); end;

procedure StartThread2;
var thrid:DWord;
begin th2:=CreateThread(nil,0,@thr2,nil,0,thrid); end;

procedure TForm1.FormCreate(Sender: TObject);
begin
...
startthread1;
startthread2;
suspendthread(th2);
...
end;

Сами функции:

function thr1:byte;
begin
y:=55+round(50*sin((x+dx)/25));
y1:=55+round(50*sin(x/25));
form1.image1.Canvas.Pen.Color:=cllime;
form1.image1.Canvas.MoveTo(599,y);
form1.image1.Canvas.LineTo(598,y1);
resumethread(th2);
suspendthread(th1);
end;

function thr2:byte;
begin
y:=65+round(50*sin((x+dx)/25));
y1:=65+round(50*sin(x/25));
form1.image1.Canvas.Pen.Color:=clyellow;
form1.image1.Canvas.MoveTo(599,y);
form1.image1.Canvas.LineTo(598,y1);
form1.image1.Canvas.CopyRect(r2,form1.image1.Canvas,r1);
form1.image1.Canvas.Pen.Color:=clactivecaption;
form1.image1.Canvas.MoveTo(599,0);
form1.image1.Canvas.LineTo(599,121);
x:=x+dx;
resumethread(th1);
suspendthread(th2);
end;

Проблема:
Один раз проходит, затем останавливается и не двигается...
Продолжается построение только если, к примеру в таймере, опять сделать:
startthread1;
startthread2;

Так и должно быть?
__________________
Тиха украинская ночь, но сало надо перепрятать!!!

Последний раз редактировалось Kuzmich; 23.03.2005 в 18:49.
Kuzmich вне форума  
Старый 23.03.2005, 18:54     # 2
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Когда функция исполнения потока доходит до своего логического конца, то работа потока, конечно, прекращается.

P.S. Кстати, а почему ты не пользуешься наследником TThread?
ЕЖ вне форума  
Старый 23.03.2005, 19:27     # 3
Kuzmich
:::AAK:::
 
Аватар для Kuzmich
 
Регистрация: 25.01.2004
Сообщения: 915

Kuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех Гуру
Цитата:
P.S. Кстати, а почему ты не пользуешься наследником TThread?
Нужно синхроницацию потоков сделать вручную, с ним получится?
Кстати, это вообще похоже на синхронизацию или пример неудачный?
__________________
Тиха украинская ночь, но сало надо перепрятать!!!
Kuzmich вне форума  
Старый 23.03.2005, 23:56     # 4
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Конечно получится!
Рекомендую прочитать статейку
http://callipso.bestcode.org/delphi/artical/num2.html
ЕЖ вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

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


Часовой пояс GMT +4, время: 02:13.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.