码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-08-23 13:29:39      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:释放   ini   bsp   初始化   linux   linux多线程   共享资源   举例   共享   

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

 互斥量

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

数据类型: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多线程编程——线程的同步与互斥

标签:释放   ini   bsp   初始化   linux   linux多线程   共享资源   举例   共享   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!