首页 > 编程语言 > 详细

Linux多线程编程——线程的同步与互斥

时间:2017-08-23 12:44:37      阅读:286      评论:0      收藏:0      [点我收藏+]
前言:无论是多线程编程还是多进程编程,控制好不同线程或不同进程之间同步和互斥问题是非常有必要的。同步是多个进程或线程共同完成某个任务,举例说,一个缓冲区的生产者和消费者问题,当生产者生产了一个商品时,等待的消费者就获得了一个消息知道可以去取走商品了,当消费者取走一个商品后,生产者就知道可以继续生产一个商品了,这是同步问题,所谓互斥问题,是指某个共享资源在一次操作中,只能被一个线程或进程占有,其他的线程或进程不能对它进行操作,比如对一个共享内存的读写操作,当一个进程对它写的时候,另一个进程就不能对它读,不然有可能造成数据不一致。

 互斥量

互斥量相当与锁,在使用共享资源时,对它加锁,使用完后,释放锁,在加锁期间,其他的线程不能对该共享资源进行操作

数据类型:pthread_mutex_t

相关API

初始化和销毁互斥量

int pthread_mutex_init(pthread_mutext_t *restrict mutex, const pthread_mutexattr_t *restrict attr); //attr设置为NULL,代表以默认属性初始化互斥量

int pthread_mutex_destroy(pthread_mutex_t *mutex);

加锁

int pthread_mutex_lock(pthread_mutex_t *mutex); //对互斥量加锁,若互斥量已加锁,则会阻塞,直到信号量解锁,成功返回0,

int pthread_mutex_trylock(pthread_mutex_t *mutex);//如果信号量没被锁,则加锁,并返回0,若信号已被锁,则不会阻塞,返回一个非0值

int pthread_mutex_unlock(pthread_mutex_t *mutex);//解锁

Linux多线程编程——线程的同步与互斥

原文:http://www.cnblogs.com/CodingUniversal/p/7413571.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!