pthread_mutex

soul.stone soul.stone     2022-08-27     751

关键词:

#include <pthread.h>

 

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int pthread_mutex_init (pthread_mutex_t *mutex , pthread_mutexattr_t * attr );
int pthread_mutex_destroy (pthread_mutex_t *mutex );

 

int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
destroy and initialize the mutex attributes object。

 

int pthread_mutexattr_setpshared(pthread_mutexattr_t *mattr, int pshared)
int pthread_mutexattr_getshared(pthread_mutexattr_t *mattr,int *pshared)
指定是该进程与其他进程的同步还是同一进程内不同的线程之间的同步。可以设置为PTHREAD_PROCESS_SHARE和PTHREAD_PROCESS_PRIVATE。默认是后者,表示进程内使用锁

 

pthread_mutexattr_settype(pthread_mutexattr_t *attr , int type)
pthread_mutexattr_gettype(pthread_mutexattr_t *attr , int *type)
PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。当一个线程加锁以后,其余请求锁的线程将形成一个等待队列,并在解锁后按优先级获得锁。这种锁策略保证了资源分配的公平性。
PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。
PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTHREAD_MUTEX_TIMED_NP类型动作相同。这样就保证当不允许多次加锁时不会出现最简单情况下的死锁。
PTHREAD_MUTEX_ADAPTIVE_NP,适应锁,动作最简单的锁类型,仅等待解锁后重新竞争。

 

int pthread_mutex_lock (pthread_mutex_t *mutex );
int pthread_mutex_trylock (pthread_mutex_t *mutex );
int pthread_mutex_unlock (pthread_mutex_t *mutex );
线程调用该函数让互斥锁上锁,如果该互斥锁已被另一个线程锁定和拥有,则调用该线程将阻塞,直到该互斥锁变为可用为止。

ios面试题(多线程)---锁

...依次是:OSSpinLock(自旋锁)>dispatch_semaphone(信号量)>pthread_mutex(互斥锁)>NSLock(互斥锁)>NSCondition(条件锁)>pthread_mutex(recursive互斥递归锁)>NSRecursiveLock(递归锁)>NSConditionLock(条件锁)>synchronized(互斥锁... 查看详情

多个线程试图锁定

...13-06-1320:31:30【问题描述】:我想在C++程序中使用pthreads和pthread_mutexes。我还没有任何实际代码,只是一个关于互斥锁如何工作的问题。如果我让线程1锁定了一个互斥体,然后n个其他线程尝试锁定同一个互斥体,那么当线程1解锁... 查看详情

阿里二面面经

...x快一倍多。进出最快的锁(windows2k的criticalsection和linux的pthread_mutex),windows比linux的要快五倍左右。可见多线程这个具体的领域内,linux还是稍逊windows一点。这应该是情有可原的,毕竟unix家族都是从多进程过来的,而w 查看详情

phtread_mutex组合

...htread_mutex通过mutexattr设定其类型,并保存在成员__kind中。pthread_mutex的锁操作函数根据__kind进行方法的分派(dispatch)。__kind由5个字段的位属性组成,其中4个字段可以通过mutexattr进行设定。通过属性的组合来决定锁的功能和行为。... 查看详情

环形缓冲区的c语言实现

#include<stdio.h> #include<stdlib.h>  #include<string.h> #include<unistd.h> #include<pthread.h> #defineBUFFSIZE1024*1024 #definemin(x,y)((x)<(y)?(x):(y)) pthread_mutex 查看详情

perf 是不是锁定配置文件用户空间互斥锁?

...】:2013-06-0720:37:40【问题描述】:总结:perflock是否配置pthread_mutex?详情:工具perf有一个选项perflock。手册页说:Youcananalyzevariouslockbehavioursandstatistic 查看详情

多线程系列面试题4-常见的锁有哪些,使用过么,简单说说(代码片段)

...OSSpinLock,os_unfair_lock前者已经废弃,替换者是后者,是自旋锁pthread_mutex,NSLock,NSRecursiveLock,NSCondition,NSConditionLock pthread_mutex一般不使用,会使用它的封装对像NSLock,这些是互斥锁@synchronizedswift没有,只能用底层来实现各类似的,是一种最... 查看详情

进程线程多进程多线程的优缺点

...倍多。进出最快的锁(windows2k的criticalsection和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好&#x 查看详情

posix信号量互斥锁自旋锁读写锁(代码片段)

...互斥锁信号量sem_t(使用sem_init()或是sem_open()),互斥锁pthread_mutex(创建使用pthread_mutex_init())。以生产者和消费者问题的实现来对POSIX信号量和互斥锁进行掌握,大体的程序思路如下。两个信号量(sem_full,sem_empty)和一 查看详情

pthread.h-自愿cpu是否是调度另一个用户级线程的唯一触发器?

...步骤。这包括库调用,如sleep(),read(),select(),pthread_mutex_ 查看详情

如何创建线程?如何保证线程安全?

...方式,如:@synchronized、NSLock、dispatch_semaphore、NSCondition、pthread_mutex、OSSpinLock。然而:OSSpinLock和dispatch_semaphore的效率远远高于其他。@synchronized和NSConditionLock效率较差。鉴于OSSpinLock的不安全,所以我们在开发中如果考虑性能的话... 查看详情

c++多线程怎么实现

C++多线程也可以使用UNIXC的库函数,pthread_mutex_t,pthread_create,pthread_cond_t,pthread_detach,pthread_mutex_lock/unlock,等等。在使用多线程的时候,你需要先创建线程,使用pthread_create,你可以使主线程等待子线程使用pthread_join,也可以使线程分... 查看详情

atomic

...,我们就再也不用理线程锁了。下面这行代码,和上面被pthread_mutex保护的那行代码作用是一样的,而且也是线程安全的。__sync_fetch_and_add(&global_int, 查看详情

多线程安全问题及各种锁

...头文件#import<os/lock.h>调用ticketTest方法打印结果:2.3pthread_mutex互斥锁普通用法导入头文件#import<pthread.h>调用ticketTest方法打印结果:mutex也叫“互斥锁”,等待锁的线程处于休眠状态,不是忙等状态。上面使用的是Normal类... 查看详情

c++多线程同时运行两个函数该怎样编程啊?

...循环同时运行也行1、C++多线程也可以使用UNIXC的库函数,pthread_mutex_t,pthread_create,pthread_cond_t,pthread_detach,pthread_mutex_lock/unlock,等等。在使用多线程的时候,你需要先创建线程,使用pthread_create,你可以使主线程等待子线程使用pthread_j... 查看详情