Russian Qt Forum

Программирование => С/C++ => Тема начата: YvenTitan от Декабрь 08, 2016, 15:22



Название: std::thread или pthread_t
Отправлено: YvenTitan от Декабрь 08, 2016, 15:22
Здравствуйте
Мне надо написать программу без QT с потоками под QNX (советы подойдут и под Linux). Я бы хотел в бОльшей степени писать на С++, чем на С.
Сначала я использовал std::thread, но столкнулся с проблемой убить процесс по pidу. И вообще в этом классе мало функций.
Если писать через pthread_t, то там много функций и проблему с удалением потока решить легче, но нельзя вызвать функцию-член класса.
Через что посоветуете делать потоки?


Название: Re: std::thread или pthread_t
Отправлено: Пантер от Декабрь 08, 2016, 15:30
> но столкнулся с проблемой убить процесс по pidу. И вообще в этом классе мало функций

Не совсем понял проблему.


Название: Re: std::thread или pthread_t
Отправлено: YvenTitan от Декабрь 08, 2016, 15:36
Я не знаю, как узнать pid процесса, если создаю поток через std::thread


Название: Re: std::thread или pthread_t
Отправлено: Пантер от Декабрь 08, 2016, 15:43
А зачем тебе пид процесса?


Название: Re: std::thread или pthread_t
Отправлено: YvenTitan от Декабрь 08, 2016, 15:46
Для того, чтобы сделать kill по pid


Название: Re: std::thread или pthread_t
Отправлено: Пантер от Декабрь 08, 2016, 15:52
Ты видимо путаешь потоки и процессы. Обрисуй задачу.


Название: Re: std::thread или pthread_t
Отправлено: Авварон от Декабрь 08, 2016, 16:23
Есть нативная ручка (http://www.cplusplus.com/reference/thread/thread/native_handle/)
Но это неправильный подход - тред нельзя просто так убивать, он должен корректно завершить работу.
Для этого можно завести флажок finished и проверять его из треда.


Название: Re: std::thread или pthread_t
Отправлено: qate от Декабрь 08, 2016, 21:12
Через что посоветуете делать потоки?

для начала прочитать  "Энтони Уильямс - Параллельное программирование на С++ в действии"