linux线程同步之互斥量(mutex)

linux线程同步之互斥量(mutex)

ID:34707928

大小:49.78 KB

页数:5页

时间:2019-03-09

linux线程同步之互斥量(mutex)_第1页
linux线程同步之互斥量(mutex)_第2页
linux线程同步之互斥量(mutex)_第3页
linux线程同步之互斥量(mutex)_第4页
linux线程同步之互斥量(mutex)_第5页
资源描述:

《linux线程同步之互斥量(mutex)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux线程同步之互斥量(mutex)互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。  互斥量,从字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用于保护临界区(共享资源),以保证在任何时刻只有一个线程能够访问共享的资源。  互斥量类型声明为pthread_mutex_t数据类型,在中有具体的定义。  1、互斥量初始化和销毁/*Initializeamutex. */i

2、ntpthread_mutex_init(pthread_mutex_t*__mutex,__constpthread_mutexattr_t*__mutexattr);/*Destroyamutex. */intpthread_mutex_destroy(pthread_mutex_t*__mutex);  上面两个函数分别由于互斥量的初始化和销毁。  如果互斥量是静态分配的,可以通过常量进行初始化,如下:pthread_mutex_tmlock=PTHREAD_MUTEX_INITIALIZER;  当然也可以通过pthread_mutex

3、_init()进行初始化。对于动态分配的互斥量由于不能直接赋值进行初始化就只能采用这种方式进行初始化,pthread_mutex_init()的第二个参数是互斥量的属性,如果采用默认的属性设置,可以传入NULL。  当不在需要使用互斥量时,需要调用pthread_mutex_destroy()销毁互斥量所占用的资源。  2、互斥量的属性设置/*初始化互斥量属性对象*/intpthread_mutexattr_init(pthread_mutexattr_t*__attr);/*销毁互斥量属性对象 */intpthread_mutexattr_d

4、estroy(pthread_mutexattr_t*__attr);/*获取互斥量属性对象在进程间共享与否的标志*/intpthread_mutexattr_getpshared(__constpthread_mutexattr_t*__restrict__attr,int*__restrict__pshared);/*设置互斥量属性对象,标识在进程间共享与否*/intpthread_mutexattr_setpshared(pthread_mutexattr_t*__attr,int__pshared);  互斥量在初始化的时候pthrea

5、d_mutex_init的第二个参数是互斥量的属性,如果为NULL空指针,那么就使用默认属性。  互斥量属性的数据类型为pthread_mutexattr_t,它的初始化和销毁和互斥量类似。一旦互斥量属性对象被初始化后,就可以通过调用不同的函数启用或禁止特定的属性。这里列出了一个设置特定属性的函数:pthread_mutexattr_setpshared,可以用于指定互斥量在不同进程间共享,这样可以通过互斥量来同步不同的进程,当然前提是该互斥量位于进程间的共享内存区。  pthread_mutexattr_setpshared()函数的第二个参

6、数__pshared用于设定是否进程间共享,其值可以是PTHREAD_PROCESS_PRIVATE或PTHREAD_PROCESS_SHARED,后者是设置进程间共享。  下面是使互斥量可以在进程间共享的大致过程:pthread_mutex_t*pSharedMutex; //指向共享内存区的互斥量pthread_mutexattr_tmutexAttr; //互斥量属性pSharedMutex=/*一个指向共享内存区的指针*/;pthread_mutexattr_init(&mutexAttr);pthread_mutexattr_setp

7、shared(&mutexAttr,PTHREAD_PROCESS_SHARED);pthread_mutex_init(pSharedMutex,&mutexAttr);  3、互斥量的使用/*Trylockingamutex. */intpthread_mutex_trylock(pthread_mutex_t*__mutex);/*Lockamutex. */intpthread_mutex_lock(pthread_mutex_t*__mutex);/*Unlockamutex. */intpthread_mutex_unlock(pt

8、hread_mutex_t*__mutex);  这几个函数都很简单,通过pthread_mutex_lock()函数获得访问共享资源的权限,如果已经

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。