Re[9]: Вопрос по многопоточности для C++ проекта
От: AlexGin Беларусь  
Дата: 05.07.16 16:30
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

CK>>ну либо у них там мьютекс это действительно голый объект ядра, а поддержку в userspace имеют только критические секции.

B>Да.

B>Помимо этого, в Windows они могут шариться между процессами.


Нет — критические секции в WinAPI не разделяются между процессами:
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682608(v=vs.85).aspx

The threads of a single process can use a critical section object for mutual-exclusion synchronization. The process is responsible for allocating the memory used by a critical section object, which it can do by declaring a variable of typeCRITICAL_SECTION. Before using a critical section, some thread of the process must call InitializeCriticalSection orInitializeCriticalSectionAndSpinCount to initialize the object.


Вот полезная инфа:
http://stackoverflow.com/questions/800383/what-is-the-difference-between-mutex-and-critical-section

Критические секции в WinAPI — это легковесные объекты, которые не являются объектами ядра (при их создании нет опции LPSECURITY_ATTRIBUTES).

Именно поэтому у меня и возник данный вопрос:
можно ли в Qt, boost, STL использовать такие штуковины, как критические секции, не влезая в WinAPI?

То, что мьютексы работают более медленно, чем крит-секции — это известно:
http://stackoverflow.com/questions/9997473/stdmutex-performance-compared-to-win32-critical-section
Отредактировано 05.07.2016 17:43 AlexGin . Предыдущая версия . Еще …
Отредактировано 05.07.2016 16:44 AlexGin . Предыдущая версия .
Отредактировано 05.07.2016 16:39 AlexGin . Предыдущая версия .
Отредактировано 05.07.2016 16:37 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.