Re[2]: Ещё одно применение shared_ptr
От: Alexander G Украина  
Дата: 27.12.09 11:40
Оценка:
Здравствуйте, remark, Вы писали:

R>А вот с "получает результаты" заминочка. Предложенный вариант не будет работать, т.к. weak_ptr<>::expired() не передаёт видимость данных между потоками, которые освободили ассоциированный shared_ptr, и потоком которому expired() вернул true (кто-то обещал?).


угу, понял.


R>Да и вообще необходимость использования поллинга как-то смущает, почему не сделать просто:

R>
R>boost::thread worker ([]()
R>{
R>  lengthy_work(...);
R>  PostMessage(current_thread_id, WM_WORK_ACCOMPLISHED, work_id, 0);
R>});
R>


В таком варианте смущает возможность удаления адресата PostMessage до вызова PostMessage, во время вызова PostMessage, между PostMessage и получением сообщения — прийдётся предусмотреть проверку "существует ли адресат" и продление жизни адресата на время отправки сообщения.

Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.