c++ - 如何确保执行相同功能的两个线程互斥

标签 c++ c mutex

两个线程将使用相同的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/

相关文章:

C++ 创建原子函数

c - C 源文件中的外部结构

c++ - typedef 枚举输入

c++ - 规避类的构造函数是合法的还是会导致未定义的行为?

c++ - 使用表达式 : how to minimize runtime construction time

c - 将可变长度字符串分配给固定长度字符串

c - -fomit-frame-pointer *总是*省略 fp 吗?

c - C 中奇怪的 int 输出

c++ - 为什么 std::scoped_lock 的不同互斥顺序会影响性能?

c++ - C++ cout和cin缓冲区,以及一般的缓冲区