线程同步有几种方法 线程同步的方法有哪些

线程同步的方法有哪些?在linux下 , 系统提供了很多种方式来实现线程同步 , 其中最常用的便是互斥锁、条件变量和信号量这三种方式 , 可能还有很多伙伴对于这三种方法都不熟悉 , 下面就给大家详细介绍下 。

线程同步有几种方法 线程同步的方法有哪些

文章插图


Linux下实现线程同步的三种方法:
一、互斥锁(mutex)
通过锁机制实现线程间的同步 。
1、初始化锁 。 在Linux下 , 线程的互斥量数据类型是pthread_mutex_t 。 在使用前 , 要对它进行初始化 。
静态分配:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
动态分配:int pthread_mutex_init(pthread_mutex_t *mutex ,  const pthread_mutex_attr_t *mutexattr);
2、加锁 。 对共享资源的访问 , 要对互斥量进行加锁 , 如果互斥量已经上了锁 , 调用线程会阻塞 , 直到互斥量被解锁 。
int pthread_mutex_lock(pthread_mutex *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
3、解锁 。 在完成了对共享资源的访问后 , 要对互斥量进行解锁 。
int pthread_mutex_unlock(pthread_mutex_t *mutex);
4、销毁锁 。 锁在是使用完成后 , 需要进行销毁以释放资源 。
int pthread_mutex_destroy(pthread_mutex *mutex);


    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。