【发布时间】:2017-08-02 13:21:38
【问题描述】:
线程池是否可以在没有互斥锁的情况下在单线程函数上运行?
类似于以下内容。
void* thread_func( void* p ) {
}
for( int i = 0 ; i < N ; i++ ) }
pthread_create( &t_id, &attr, thread_func, null );
}
或者我应该传递每个pthread_create 它自己的线程函数吗?
【问题讨论】:
-
我不确定您的确切意思,但是如果您打算在池中的所有线程上运行相同的功能,这取决于您是否正在访问共享资源 e。 G。柜台或类似物品。
-
@marcusshep 请不要对随机短语使用代码格式,仅对代码和变量/函数名称使用。
-
您可以将同一个线程函数用于多个线程。如果您正在访问正在修改的共享数据,那么您可能需要一个互斥锁。
-
@interjay 反应很好!
-
实际上常见在多个线程中同时运行同一个线程函数,但这与您是否需要互斥锁或其他同步辅助无关。即使在各个线程中调用的函数之间没有重叠,您也需要通过互斥锁或类似方式保护对共享数据的访问。