Информация об изменениях

Сообщение Re[9]: Вопрос по многопоточности для C++ проекта от 05.07.2016 16:30

Изменено 05.07.2016 17:43 AlexGin

Здравствуйте, 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?
Re[9]: Вопрос по многопоточности для C++ проекта
Здравствуйте, 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