Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
MasterJack
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 8
#1

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

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

Собственно сабж.
Под виндой это сделано на основе критической секции или через мьютекс как объект ядра?
Ну и в добавок - под линем реализован посредством вездесущего pthreads или...?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 04:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что под капотом std::mutex (C++):

std::string, std::fstream, ошибка кучи - C++
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString. Замечательно, то же самое... ошибка при...

как проинициализировать std::stack<const int> obj ( std::stack<int>{} ); - C++
добрый день. вопрос в коде: http://rextester.com/VCVVML6656 #include &lt;iostream&gt; #include &lt;stack&gt; //-std=c++14...

std::filesystem && std::asio и пр - C++
Пытался найти хоть какие-то сроки включения всего этого в стандарт (так же ожидается lexical_cast, any, string_algo и т.д.) и вообщем везде...

Что из этого официально бесплатно? И чем посоветуете компилить под unicod? - C++
Операционка лицензионная.

Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>... - C++ Builder
Есть двухмерный вектор: std::vector&lt;std::vector&lt;TRabbitCell&gt; &gt; *cells(5, 10); Пытаюсь заполнить его объектами класса...

Создать Mutex - C++ Builder
Здравствуйте! Ребята подскажите. Хочу сделать блокировку на запуск повторного запуска своей программы для этих целей в главном...

6
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
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
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.04.2013, 12:18 #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Посмотрите исходники интересующего компилятора в чем трабл?
Вероятно в том, что не все компиляторы open source.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.04.2013, 14:43 #4
Tulosba, Хидеры всегда есть. Если используется некий тип для Mutex-а, typedef скорее всего будет вынесен в хидер.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.04.2013, 14:54 #5
ForEveR, ну вот на примере VS можно что-то найти?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.04.2013, 15:11 #6
Tulosba, Если мне дадут исходник хедера mutex.) А то не имею я на работе VS, а в инете найти не могу.(
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 16:21
Привет! Вот еще темы с ответами:

Ошибка доступа при работе с Mutex - C++ Builder
Как решить эту ошибку?! void CheckRepeatRun() { HANDLE hMutex = CreateMutex( NULL, 0, L&quot;MyMutex&quot; ); if( GetLastError() ==...

Перевод строк std::string, std::wstring в Unicode (String) - C++ Builder
Собственно столкнулся с проблемой, как корректно перевести к примеру текст из Edit1-&gt;Text в std::string или std::wstring и соответственно...

Что происходит под капотом при autoboxing и unboxing? - Java SE
Всем привет, подскажите что происходит под капотом при autoboxing и unboxing? Подозреваю что выполняются метод ValueOf() при упаковке в...

Что такое функция или функция под капотом - C (СИ)
Собственно меня очень сильно интересует этот вопрос. Функция это указатель который содержит адрес на блок памяти с кодом самой функции? Или...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.