pthreads- все статьи тега


C++11: зависит ли std:: thread в linux от библиотеки pthread?

Я читал, что pthread является библиотекой C и не совместим с объектной моделью C++, особенно когда речь идет об обработке исключений. Итак, я хочу знать в системе linux, как GCC / clang реализует std::thread, вызывает ли он некоторые собственные функции linux / API ядра или что-то еще? Также, как реализуется std::thread_local, связанный с __thread? ...

Почему функции переменных состояния pthreads требуют мьютекса?

Я читаю на pthread.h; функции, связанные с переменной условия (например,pthread_cond_wait(3)) требуется мьютекс в качестве аргумента. Зачем? Насколько я могу судить, я собираюсь создать мьютекс просто использовать в качестве аргумента? Что этот мьютекс должен делать? ...

Почему pthread cond wait имеет ложные пробуждения?

чтобы процитировать man-страницу: при использовании переменных условий всегда существует логический предикат, включающий общие переменные, связанные с каждым условием wait, которое истинно, если поток должен продолжаться. Могут возникать ложные пробуждения из функций pthread_cond_timedwait() или pthread_cond_wait (). Поскольку возврат из pthread_cond_timedwait() или pthread_cond_wait() ничего не означает о значении этого предиката, предикат должен быть повторно оценен после такого возвращени ...

MinGW-w64 темы: posix vs win32

Я устанавливаю mingw-w64 на Windows, и есть два варианта: потоки win32 и потоки posix. Я знаю, в чем разница между потоками win32 и pthreads, но я не понимаю, в чем разница между этими двумя вариантами. Я сомневаюсь, что если я выберу потоки posix, это помешает мне вызвать функции WinAPI, такие как CreateThread. кажется, что этот параметр указывает, какой потоковый API будет использоваться какой-либо программой или библиотекой, но чем? По GCC, libstdc++ или что-то еще? Я нашел это: в чем разни ...

Разница между-pthread и-lpthread при компиляции

в чем разница между gcc -pthread и gcc -lpthread который используется при компиляции многопоточных программ? ...

Потоки и сигналы POSIX

Я пытался понять тонкости взаимодействия потоков POSIX и сигналов POSIX. В частности, меня интересует: каков наилучший способ контролировать, в какой поток подается сигнал (предполагая, что он не является фатальным в первую очередь)? каков наилучший способ сообщить другому потоку (который может быть действительно занят), что сигнал прибыл? (Я уже знаю, что это плохая идея использовать переменные состояния pthread из сигнала обработчик.) как я могу безопасно обрабатывать передачу информации о т ...

Вызов pthread cond сигнала без блокировки мьютекса

Я где-то читал, что нужно запереть мьютекс перед вызовом pthread_cond_signal и разблокировать mutext после вызова его: процедура pthread_cond_signal() является используется для сигнала (или пробуждения) другого нить, которая ждет на переменная условия. Так и должно быть вызывается после блокировки мьютекса и должен разблокировать мьютекс для того, чтобы pthread_cond_wait() обычной полный. мой вопрос: не это нормально, чтобы позвонить pthread_cond_signal или pthread_cond_broad ...

Что такое замок для повторного входа и концепция в целом?

Я всегда путаю. Кто-нибудь объяснит, что Reentrant означает в разных контекстах? И почему вы хотите использовать реентерабельность против нереентерабельности? скажем, pthread (posix) блокирующие примитивы, они повторно вступают или нет? Каких подводных камней следует избегать при их использовании? является ли мьютекс re-entrant? ...

эффективный потокобезопасный синглтон в C++

обычный шаблон для одноэлементного класса-это что-то вроде static Foo &getInst() { static Foo *inst = NULL; if(inst == NULL) inst = new Foo(...); return *inst; } однако я понимаю, что это решение не является потокобезопасным, поскольку 1) конструктор Foo может быть вызван более одного раза (что может или не может иметь значения) и 2) inst не может быть полностью построен до того, как он будет возвращен в другой поток. одним из решений является обертывание мьютекса вокруг вс ...

как получить идентификатор потока pthread в программе linux c?

в программе linux c, Как распечатать идентификатор потока потока, созданного библиотекой pthread? например: мы можем получить pid процесса по getpid() ...