C++-mutex(待验证)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++-mutex(待验证)相关的知识,希望对你有一定的参考价值。
C++-mutex(待验证)
在使用std::mutex时,应该声明为全局或者类的静态成员变量。
class A
public:
void f();
public:
static std::mutex m_Mutex;
std::mutex _mu;
void A:f()
std::lock_guard<std::mutex> guard1(_mu);
;
void A:f2()
_mu.lock();
;
_mu.unlock();
本文来自博客园,作者:Theseus‘Ship,转载请注明原文链接:https://www.cnblogs.com/yongchao/p/17450662.html
c使用mutex同步
#include <stdio.h> #include <unistd.h> #include <pthread.h> void increase(); int sum = 0; pthread_mutex_t mutex; int main() { // init mutex pthread_mutex_init(&mutex, NULL); pthread_t threads[4]; for (int i = 0; i < sizeof(threads) / sizeof(threads[0]); i++) { pthread_create(&threads[i], NULL, increase, NULL); } for (int i = 0; i < sizeof(threads) / sizeof(threads[0]); i++) { void *joinstatus; int res = pthread_join(threads[i], &joinstatus); printf("res:%d ", res); if (res) { // fprintf(stderr, "pthread_join fail"); perror("pthread_join fail"); } } // sleep(2); pthread_mutex_destroy(&mutex); printf("sum:%d ", sum); return 0; } void increase() { for (int i = 0; i < 10000; i++) { pthread_mutex_lock(&mutex); sum++; pthread_mutex_unlock(&mutex); } printf("t_id:%u ", pthread_self()); }
pthread_joint开始传的&thread,指针类型,编译和运行都没有报错,函数返回3。改成pthread_t类型的可以了
以上是关于C++-mutex(待验证)的主要内容,如果未能解决你的问题,请参考以下文章
linux C语言 多线程竞争(加锁解锁 pthread_mutex_tpthread_mutex_lock()pthread_mutex_unlock() 可解决)