Текущий архив: 2008.02.10;
Скачать: CL | DM;
Вниз
Остановка потока Найти похожие ветки
← →
Malik (2008-01-17 00:40) [0]Незнаю как поток из себя же остановить, но что бы потом потом привостановлении его управление начинало не с опять же этой точки, а со следущей, т.к. в противном случаи он опять же остановиться((
← →
_Mike_ (2008-01-17 02:31) [1]CreateEvent, SetEvent, WaitForSingleObject + F1
← →
MetalFan © (2008-01-17 09:12) [2]
> CreateEvent, SetEvent, WaitForSingleObject + F1
либо TEvent + F1
← →
Сергей М. © (2008-01-17 10:00) [3]
> что бы потом потом привостановлении его управление начинало
> не с опять же этой точки, а со следущей
Это еще надо сильно постараться, чтобы умудриться сделать "с опять же этой точки")
← →
Malik (2008-01-17 13:53) [4]
> Это еще надо сильно постараться, чтобы умудриться сделать
> "с опять же этой точки")
Да долгго думать не надо:
в потоке:
...
MyThread.Suspende;
...
потом из левого потока:
...
MyThread.Resume;
...
← →
oxffff © (2008-01-17 14:28) [5]
> MyThread.Suspende;
СуспендЕ, Джамшут.
← →
Malik (2008-01-17 14:34) [6]какая разница... тут не о орфографии речь идет!!!
← →
Malik (2008-01-17 14:43) [7]тут в мое случаи скорее всего надо использовать WaitForMultipleObjects
Но только понять не могу, что за 2-ой параметр этой ф-ии???
Вроде делаю так:
...
Events: array of TEvent;
...
WaitForMultipleObjects(Length(Events), @Events, TRUE, INFINITE);
...
Но она сигнализирует раньше времени... Сомнения у меня насчет 2-ого параметра, то ли я туда "воткнул"???
← →
oxffff © (2008-01-17 15:22) [8]
> Но она сигнализирует раньше времени... Сомнения у меня насчет
> 2-ого параметра, то ли я туда "воткнул"???
WaitForMultipleObjects(Length(Events), @Events[0], TRUE, INFINITE);
← →
Malik © (2008-01-17 15:42) [9]
> WaitForMultipleObjects(Length(Events), @Events[0], TRUE,
> INFINITE);
Если я правильно понимаю, то управление передасться следующей точке, только после срабатывание ВСЕХ Events из массива?
← →
oxffff © (2008-01-17 16:01) [10]
> Malik © (17.01.08 15:42) [9]
После перехода всех объектов синхронизации в сигнальное состояние.
← →
Malik © (2008-01-17 18:53) [11]Я специально этот вопрос задал))) Так как ваш предложенный вариант действенен только когда тип Events - THandel, а в конкретном случаи Events - TEvent.
← →
oxffff © (2008-01-17 19:37) [12]
> Malik © (17.01.08 18:53) [11]
В твоем случае TEvent это не Handle. А объект.
var Events: array of TEvent;
EventsHandles:array of Thandle;
begin
.......
setlentgh(EventsHandles,length(Events));
for i:=0 to length(Events)-1 do EventsHandles[i]:=Events[i].Handle;
WaitForMultipleObjects(Length(EventsHandles), @EventsHandles[0], TRUE, INFINITE);
← →
DiamondShark © (2008-01-17 19:53) [13]феерично.
← →
_Mike_ (2008-01-18 00:58) [14]
> Events: array of TEvent;
> ...
> WaitForMultipleObjects(Length(Events), @Events, TRUE, INFINITE);
>
Оригинально. А почитать описание функции?
первый параметр - количество элементов в массиве.
второй параметр - массив описателей объекта ядра Event - нафига туда передавать указатель на массив указателей - загадка.
Третий параметр - если True - то функция ждет завершение ВСЕХ событий, если False - одного любого
четвертый - соответственно тайм-аут
← →
oxffff © (2008-01-18 08:10) [15]
> второй параметр - массив описателей объекта ядра Event -
> нафига туда передавать указатель на массив указателей -
> загадка.
@Events
Для особо умных - это двойной указатель на массив.
← →
oxffff © (2008-01-18 08:11) [16]
> oxffff © (18.01.08 08:10) [15]
>
> > второй параметр - массив описателей объекта ядра Event
> -
> > нафига туда передавать указатель на массив указателей
> -
> > загадка.
>
>
> @Events
> Для особо умных - это двойной указатель на массив.
это двойной указатель на массив указателей
← →
Сергей М. © (2008-01-18 08:28) [17]
> Malik (17.01.08 13:53) [4]
И что ?
По твоим утверждениям, как только "левый поток" вызовет Resume, то выполнение "правого" потока, приостановившего себя вызовом Suspend (чем не "точка" ?), тут же вновь начнет выполнять Suspend (т.е. с той же "точки"), вместо того чтобы продолжить выполнение операторов, следующих за Suspend.
А это полная ерунда)
Страницы: 1 вся ветка
Текущий архив: 2008.02.10;
Скачать: CL | DM;
Память: 0.48 MB
Время: 1.542 c