Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1199935567
Cj
2008-01-10 06:26
2008.02.10
IDE зависает, причем так - конкретно...


2-1200658916
_Shuler_
2008-01-18 15:21
2008.02.10
Подсказка


6-1180070636
AHTOLLlKA
2007-05-25 09:23
2008.02.10
HTTPS запрос


2-1200582419
misha_gr
2008-01-17 18:06
2008.02.10
Хранение информации внутри exe - файла.


6-1180064868
Strang
2007-05-25 07:47
2008.02.10
Почтовый сервер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский