Я пишу многопоточную программу на С++ и хочу использовать многопоточную библиотеку C. Эта библиотека ожидает, что я буду использовать собственные системные методы, чтобы создать некоторые рабочие потоки и передать управление ее функции run(), используя следующий код:
void system_specific_thread_init();
#ifdef _WIN32
DWORD WINAPI system_specific_thread_run( LPVOID unused )
{
library_run();
return 0;
}
void system_specific_thread_init()
{
Createthread(NULL, 0, system_specific_thread_run, NULL, 0, NULL);
}
#else
void* system_specific_thread_run(void *unused)
{
library_run();
return NULL;
}
void system_specific_thread_init()
{
pthread_t id;
pthread_create(&id, NULL, system_specific_thread_run, NULL);
}
#endif
system_specific_thread_init();
после чего он будет использовать соответствующие собственные методы mutex системы для других собственных потоков системы для вызова своих функций при работе с собственной работой.
Однако я использую библиотеку С++ 11 <thread>
для создания и управления всеми моими потоками. Я хочу создать рабочий поток с помощью std::thread(library_run)
и вызвать библиотечные функции из других таких потоков.
Можно ли это сделать, или DS9K заставит демонов вылететь из моего носа?