Потоки С++ под Windows
1) Нужно ли использовать мьютексы под виндой или нет? если да то как?
2) Как прибить поток из основного процесса(тоесть из функции main)?
1.2) Для потоков мутехи не нужны, юзай критсекции. Для процессов - нужны
2)ЛИбо послать ему сообщение об окончании работы, и поток сам завершится, либо TerminateThread
Может автор имел в виду не CreateThread из винды, а библиотечную сишную _beginthreadex? :-)))
Ну, он сам уже придет и объяснит, чего хотел :)
То есть если у меня есть функция работающая с данными то можно не боятся что главный процес и поток вызовут ее одновременно и одновременно попытаются изменить данные?
А что такое критсекции? и как они пишутся на английском?
MSDN:
Цитата:
Critical section objects provide synchronization similar to that provided by mutex objects, except that critical section objects can be used only by the threads of a single process. Event, mutex, and semaphore objects can also be used in a single-process application, but critical section objects provide a slightly faster, more efficient mechanism for mutual-exclusion synchronization (a processor-specific test and set instruction). Like a mutex object, a critical section object can be owned by only one thread at a time, which makes it useful for protecting a shared resource from simultaneous access.
В общем, если по простому - критические секции обеспечивают синхронизацию при доступе к какому либо ресурсу. Этот объект может использоваться только ОДНИМ потоком, что делает критические секции полезными для защиты общего ресурса от одновременного доступа.
MSDN рулит как всегда :-))))
искать нужно в сторону EnterCriticalSection, LeaveCriticalSection, InitializeCriticalSection и т.д....
Более правельным решением синхронизации потоков будет использовании объктов Event. Объекты Event представляют более гибкую синхронизацию потоков, в простейшем случае ты можешь задавать время которое будет ждать твой поток занятый ресурс другим потоком.
Да можно использовать любой объект синхронизации, но критическая секция быстрее.