Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2017-05-15 18:07:45 ЛС | профиль | цитата
Netspirit писал(а):
Тут не совсем понял

Имелось в виду, что SetEvent снимает более высокоприоритетный поток с ожидания, а scheduler винды моментально передает ему управление.
И не отдаст обратно, пока поток не завершится полностью.
Но все это не срабатывает, если doClose запускается от onRead - приоритеты тогда одинаковые.

Netspirit писал(а):
потому что уверен, что решил эту задачу

Решить задачи в некотором частном случае можно, конечно же. Любой деструктор решает ее - метод объекта, который убивает сам себя.
И в COMex можно, пожалуй. Например, делать CloseHandle(hFile) прямо по окончании thrd (предварительно дождавшись окончания thwr).

Но это вовсе не разговор о глобальных паттернах.

Netspirit писал(а):
нужно делать record с 2-мя полями

Если заниматься буквоедством, то тип второго параметра - указатель на статический массив хэндлов. А не на record.
У меня там жульство применено, посмотри внимательней. OvrRd.hEvent и EvRdStop расположены в hiCOMex последовательно. Т.е., рядом: offset первого хэндла - 38h, второго - 3Ch
карма: 9

0
Редактировалось 4 раз(а), последний 2017-08-01 23:37:58