两个线程将使用相同的func()
。这两个线程应该是互斥的。如何让它正常工作?
(输出应该是“abcdeabcde”)
char arr[] = "ABCDE";
int len = 5;
void func() {
for(int i = 0; i <len;i++)
printf("%c",arr[i]);
}
最佳答案
创建一个互斥体?假设您正在使用 pthread,
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
....
void func() {
int errcode = pthread_mutex_lock(&mutex);
// deal with errcode...
// printf...
errcode = pthread_mutex_unlock(&mutex);
// deal with errcode...
}
参见 https://computing.llnl.gov/tutorials/pthreads/#Mutexes获取教程。
关于c++ - 如何确保执行相同功能的两个线程互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2700033/