Форум программистов, компьютерный форум CyberForum.ru

Что под капотом std::mutex - C++

Войти
Регистрация
Восстановить пароль
 
MasterJack
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 8
05.04.2013, 04:00     Что под капотом std::mutex #1
Собственно сабж.
Под виндой это сделано на основе критической секции или через мьютекс как объект ядра?
Ну и в добавок - под линем реализован посредством вездесущего pthreads или...?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
05.04.2013, 11:55     Что под капотом std::mutex #2
MasterJack, Зависит от компилятора же. Посмотрите исходники интересующего компилятора в чем трабл?
В gcc 4.6.3 к примеру через gthread

C++
1
2
typedef __gthread_mutex_t           __native_type;
__native_type  _M_mutex;
Который в частности может быть одним из типов

C++
1
2
typedef pthread_mutex_t __gthread_mutex_t;
typedef int __gthread_mutex_t;
И чем-то еще в зависимости от
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* Check first for thread specific defines.  */
#if defined (_GLIBCXX___tpf_GLIBCXX___)
#include <bits/gthr-tpf.h>
#elif _GLIBCXX__PTHREADS
#include <bits/gthr-posix.h>
#elif _GLIBCXX__PTHREADS95
#include <bits/gthr-posix95.h>
#elif _GLIBCXX__DCE_THREADS
#include <bits/gthr-dce.h>
#elif _GLIBCXX__SOLARIS_THREADS
#include <bits/gthr-solaris.h>
 
/* Include GTHREAD_FILE if one is defined.  */
#elif defined(_GLIBCXX_HAVE_GTHR_DEFAULT)
#if __GXX_WEAK__
/* The pe-coff weak support isn't fully compatible to ELF's weak.
   For static libraries it might would work, but as we need to deal
   with shared versions too, we disable it for mingw-targets.  */
#ifdef _GLIBCXX___MINGW32_GLIBCXX___
#undef _GLIBCXX_GTHREAD_USE_WEAK
#define _GLIBCXX_GTHREAD_USE_WEAK 0
#endif
 
#ifndef _GLIBCXX_GTHREAD_USE_WEAK
#define _GLIBCXX_GTHREAD_USE_WEAK 1
#endif
#endif
#include <bits/gthr-default.h>
 
/* Fallback to single thread definitions.  */
#else
#include <bits/gthr-single.h>
#endif
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
05.04.2013, 12:18     Что под капотом std::mutex #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Посмотрите исходники интересующего компилятора в чем трабл?
Вероятно в том, что не все компиляторы open source.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
05.04.2013, 14:43     Что под капотом std::mutex #4
Tulosba, Хидеры всегда есть. Если используется некий тип для Mutex-а, typedef скорее всего будет вынесен в хидер.
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
05.04.2013, 14:54     Что под капотом std::mutex #5
ForEveR, ну вот на примере VS можно что-то найти?
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
05.04.2013, 15:11     Что под капотом std::mutex #6
Tulosba, Если мне дадут исходник хедера mutex.) А то не имею я на работе VS, а в инете найти не могу.(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 16:21     Что под капотом std::mutex
Еще ссылки по теме:

C++ Std::mutex и std::recursive_mutex
C++ Std::mutex выдает исключение abort() при попытки unlock()
Std::atomic vs std::mutex C++
C++ Что означает запись std::int?
C++ Builder Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>...

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
05.04.2013, 16:21     Что под капотом std::mutex #7
Совместными усилиями с ForEveR выяснилось, что для VS2012 всё упирается в
C++
1
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
внутри include\thr\xthrcommon.h
Yandex
Объявления
05.04.2013, 16:21     Что под капотом std::mutex
Ответ Создать тему
Опции темы

Текущее время: 00:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru