Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 8
1

Что под капотом std::mutex

05.04.2013, 04:00. Показов 1893. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сабж.
Под виндой это сделано на основе критической секции или через мьютекс как объект ядра?
Ну и в добавок - под линем реализован посредством вездесущего pthreads или...?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2013, 04:00
Ответы с готовыми решениями:

Embarcadero Berlin. Отсутствуют библиотеки многопоточности (thread,mutex) в std под платформу win 32bit
Господа, я тут на Берлин переехал, т.к. очень понадобилась многопоточность и лучшая ее реализация...

А что под капотом у vector?
Не знаю куда написать и вроде тем отвечающий на вопрос не нашел. Вопрос заключается в том, что...

Std::atomic vs std::mutex
class AtomicSome { private: std::atomic_bool _isReady; //not std::atomic_flag ...

Std::mutex и std::recursive_mutex
Есть некий класс: class A { public bool some_method(); private: std::mutex...

6
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.04.2013, 11:55 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
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.04.2013, 12:18 3
Цитата Сообщение от ForEveR Посмотреть сообщение
Посмотрите исходники интересующего компилятора в чем трабл?
Вероятно в том, что не все компиляторы open source.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.04.2013, 14:43 4
Tulosba, Хидеры всегда есть. Если используется некий тип для Mutex-а, typedef скорее всего будет вынесен в хидер.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.04.2013, 14:54 5
ForEveR, ну вот на примере VS можно что-то найти?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.04.2013, 15:11 6
Tulosba, Если мне дадут исходник хедера mutex.) А то не имею я на работе VS, а в инете найти не могу.(
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.04.2013, 16:21 7
Совместными усилиями с ForEveR выяснилось, что для VS2012 всё упирается в
C++
1
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
внутри include\thr\xthrcommon.h
1
05.04.2013, 16:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2013, 16:21
Помогаю со студенческими работами здесь

Под капотом вызова функции
Решил разобраться как вызываются функции в c++. То есть как компилятор преобразовывает код в...

Синхронизация доступа к данным с использованием std::mutex
Почему при использовании мьютексов их обычно создают где то в отдаленной от вызова области?...

Std::mutex выдает исключение abort() при попытки unlock()
до создания потока блокирую mutex, создаю поток и опять блокирую mutex, поток снимает блок и мы...

Как быть, если поток std::mutex в вечном цикле лочится на все содержимое?
привет. работаю с многозадачностью. заюзал sleep, т.к без него на данном потоке mutex просто...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru