我正在编写一个多线程 C++ 程序并希望使用多线程 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();
之后它将使用相关的本机系统互斥方法对其他本机系统线程调用其函数,同时继续进行自己的工作。
但是,我使用 C++11<thread>
库来创建和管理我的所有线程。我希望创建工作线程std::thread(library_run)
并从其他此类线程调用库函数。
这样做安全吗,还是 DS9K 会让恶魔从我的鼻子里飞出来?