pthread_mutex_lock()、pthread_mutex_unlock()

pthread_mutex_lock()

pthread_mutex_unlock()

当该函数返回时,该互斥锁已经被锁定。线程调用该函数让互斥锁上锁,如果该互斥锁已被另一个线程锁定和拥有,则调用该线程将阻塞,直到该互斥锁为可用为止;

头文件为:

#include <pthread.h>

pthread_mutex_lock(&sys_config_change_lock);
    comRes.baudrate=ui_com.baudrate.toInt();
    if(ui_com.parity=="奇校验")
    {
        comRes.parity=1;
    }
    if(ui_com.parity=="偶校验")
    {
        comRes.parity=2;
    }
    if(ui_com.parity=="无")
    {
        comRes.parity=0;
    }
    sys_config_change_flag=TRUE;
    pthread_mutex_unlock(&sys_config_change_lock);

时间: 2024-10-12 04:30:19

pthread_mutex_lock()、pthread_mutex_unlock()的相关文章

后端程序员之路 40、Pthreads

POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准.线程这个东西在操作系统原理里讲得比较清楚了,再加上对windows那一套进程线程的东西比较清楚,所以这里还是很多可以直接类比学习的. # 基本结构和概念- pthread_t:线程ID,可以基本认为和windows一样是个DWORD- pthread_attr_t:线程属性,主要包括scope属性.detach属性.堆栈地址.堆栈大小.优先级等- pthread_mutex_t, 互斥体 # 线程操作函数

在 Windows 下用 TDM-GCC(MinGW)开发 DLL 涉及到数据同步锁及 DLL 初始化终止化函数的问题

在 Windows 下用 TDM-GCC(MinGW)开发 DLL 如果要用到数据同步锁,理论上可以采用 Windows API 提供的临界区实现(需要用到的函数有 InitializeCriticalSection.DeleteCriticalSection.EnterCriticalSection.LeaveCriticalSection),也可以采用 GCC 的 pthread 库中的 pthread mutex lock 互斥锁来实现(需要用到的函数有 pthread_mutex_ini

主线程和子线程的同步控制

一个线程的结束有两种途径,一种是象我们以下的样例一样.函数结束了.调用它的线程也就结束了.还有一种方式是通过函数pthread_exit来实现.另外须要说明的是,一个线程不能被多个线程等待,也就是说对一个线程仅仅能调用一次pthread_join.否则仅仅有一个能正确返回.其它的将返回ESRCH 错误. 在Linux中,默认情况下是在一个线程被创建后.必须使用此函数对创建的线程进行资源回收,可是能够设置Threads attributes来设置当一个线程结束时.直接回收此线程所占用的系统资源.具

【转】多核CPU运行模式

多核CPU运行模式主要有以下三种: •非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation). •对称多处理(Symmetric multiprocessing,SMP)——一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定某一个内核. •混合多处理(Bound multiprocessing,BMP)——一个操作系统的实例可以同时管理所有CPU内核,但每个应用被锁定于某

多线程中的条件线程简单示例

1.原理:理解的条件线程最常见的用法就是两个线程同时对一个队列进行处理,比如一个线程负责在队列未满的时候插入item,另外一个线程负责在队列非空时取出item,条件线程涉及4个线程相关函数,pthread_mutex_lock.pthread_mutex_unlock.pthread_cond_wait.pthread_cond_signal,其中pthread_mutex_lock负责对线程加锁,以免其他线程同时对共享资源(比如本例中的int cond_num)进行修改,pthread_mut

深入理解Java中的底层阻塞原理及实现

谈到阻塞,相信大家都不会陌生了.阻塞的应用场景真的多得不要不要的,比如 生产-消费模式,限流统计等等.什么 ArrayBlockingQueue. LinkedBlockingQueue.DelayQueue 等等,都是阻塞队列的实现啊,多简单! 阻塞,一般有两个特性很亮眼:1. 不耗 CPU 等待:2. 线程安全: 额,要这么说也 OK 的.毕竟,我们遇到的问题,到这里就够解决了.但是有没有想过,这容器的阻塞又是如何实现的呢? 好吧,翻开源码,也很简单了:(比如 ArrayBlockingQu

pthread_mutex_lock()的属性介绍

pthread_mutex_lock pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); 描述 pthread_mutex_lock()函数锁住由mutex指定的mutex 对象.如果mutex已经被锁住,调用这个函数的线程阻塞直到mutex可用为止.这跟函数返

深入理解pthread_cond_wait、pthread_cond_signal

===============================man pthread_cond_wait的解释========================== LINUX环境下多线程编程肯定会遇到需要条件变量的情况,此时必然要使用pthread_cond_wait()函数.但这个函数的执行过程比较难于理解. pthread_cond_wait()的工作流程如下(以MAN中的EXAMPLE为例): Consider two shared variables x and y, protected

pthread_mutex_lock

pthread_mutex_lock pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); 描述 pthread_mutex_lock()函数锁住由mutex指定的mutex 对象.如果mutex已经被锁住,调用这个函数的线程阻塞直到mutex可用为止.这跟函数返