1
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t *mutexes;
void *thread_work(void *id)
{
long tid = (long)id;
while(some_condition)
{
pthread_mutex_lock(mutexes[0]);
}
}
如果我在main
函数中动态分配内存为mutexes
,那么线程中使用mutexes[0]
线程安全吗?他们是要引用相同的互斥锁还是为每个线程创建副本?线程之间共享指针吗?
我知道它是基础知识,但在阅读完一些教程后我感到困惑。
线程将访问相同的互斥锁。堆内存在线程之间共享。这个答案是相当不错的http://stackoverflow.com/questions/1665419/do-threads-have-a-distinct-heap/1665432#1665432 – Baldrick
它将被共享,但应该是线程安全的。 https://computing.llnl.gov/tutorials/pthreads/#PassingArguments –
@ Phil_12d3这不能回答我的问题,我想。我不想传递互斥参数。我希望它们是全局变量,只需在线程中引用它们即可。互斥体的索引将根据某些条件进行选择。 – pmichna