pthread_t互斥锁的设置范围

pthread_t  时间:2021-06-13  阅读:()

关于Linux 线程pthread_join的用法

Linux系统pthread_join用于挂起当前线程(调用pthread_join的线程),直到thread指定的线程终止运行为止,当前线程才继续执行。

案例代码: /******************************************* **????Name:pthread_join.c **????用于Linux下多线程学习 **????案例解释线程的暂停和结束 **????Author:admin **????Date:2015/8/11??????? **????Copyright?(c)?2015,All?Rights?Reserved! ********************************************** #include?<pthread.h> #include?<unistd.h> #include?<stdio.h> void?*thread(void?*str) { ????int?i; ????//不调用pthread_join线程函数 ????for?(i?=?0;?i?<?10;?++i) ????{ ????????sleep(2); ????????printf(?"This?in?the?thread?:?%d "?,?i?); ????} ????return?NULL; } int?main() { ????pthread_t?pth; ????int?i; ????int?ret?=?pthread_create(&pth,?NULL,?thread,?(void?*)(i)); ????//调用pthread_join线程函数 ????pthread_join(pth,?NULL); ????for?(i?=?0;?i?<?10;?++i) ????{ ????????sleep(1); ????????printf(?"This?in?the?main?:?%d "?,?i?); ????} ????return?0; }通过Linux下shell命令执行上面的案例代码: [root@localhost?src]#??pthread_join.c?-lpthread [root@localhost?src]#?./a.out This?in?the?main?:?0 This?in?the?thread?:?0 This?in?the?main?:?1 This?in?the?main?:?2 This?in?the?thread?:?1 This?in?the?main?:?3 This?in?the?main?:?4 This?in?the?thread?:?2 This?in?the?main?:?5 This?in?the?main?:?6 This?in?the?thread?:?3 This?in?the?main?:?7 This?in?the?main?:?8 This?in?the?thread?:?4 This?in?the?main?:?9子线程还没有执行完毕,main函数已经退出,那么子线程也就退出了,“pthread_join(pth,?NULL);”函数起作用。

[root@localhost?src]#??pthread_join.c?-lpthread [root@localhost?src]#?./a.out This?in?the?thread?:?0 This?in?the?thread?:?1 This?in?the?thread?:?2 This?in?the?thread?:?3 This?in?the?thread?:?4 This?in?the?thread?:?5 This?in?the?thread?:?6 This?in?the?thread?:?7 This?in?the?thread?:?8 This?in?the?thread?:?9 This?in?the?main?:?0 This?in?the?main?:?1 This?in?the?main?:?2 This?in?the?main?:?3 This?in?the?main?:?4 This?in?the?main?:?5 This?in?the?main?:?6 This?in?the?main?:?7 This?in?the?main?:?8 This?in?the?main?:?9这说明pthread_join函数的调用者在等待子线程退出后才继续执行。

linux线程同步的互斥锁(mutex)到底怎么用的》?谢谢

互斥锁(mutex) 通过锁机制实现线程间的同步。

1、初始化锁。

在Linux下,线程的互斥量数据类型是pthread_mutex_t。

在使用前,要对它进行初始化。

2、静态分配:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 3、动态分配:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *mutexattr); 4、加锁。

对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。

????int?pthread_mutex_lock(pthread_mutex?*mutex); ????int?pthread_mutex_trylock(pthread_mutex_t?*mutex); ????解锁。

在完成了对共享资源的访问后,要对互斥量进行解锁。

????int?pthread_mutex_unlock(pthread_mutex_t?*mutex); ????销毁锁。

锁在是使用完成后,需要进行销毁以释放资源。

????int?pthread_mutex_destroy(pthread_mutex?*mutex); ????#include?<cstdio>?? ????#include?<cstdlib>?? ????#include?<unistd.h>?? ????#include?<pthread.h>?? ????#include?"iostream"?? ????using?namespace?std;?? ????pthread_mutex_t?mutex?=?PTHREAD_MUTEX_INITIALIZER;?? ????int?tmp;?? ????void*?thread(void?*arg)?? ????{?? ????????cout?<<?"thread?id?is?"?<<?pthread_self()?<<?endl;?? ????????pthread_mutex_lock(&mutex);?? ????????tmp?=?12;?? ????????cout?<<?"Now?a?is?"?<<?tmp?<<?endl;?? ????????pthread_mutex_unlock(&mutex);?? ????????return?NULL;?? ????}?? ????int?main()?? ????{?? ????????pthread_t?id;?? ????????cout?<<?"main?thread?id?is?"?<<?pthread_self()?<<?endl;?? ????????tmp?=?3;?? ????????cout?<<?"In?main?func?tmp?=?"?<<?tmp?<<?endl;?? ????????if?(!pthread_create(&id,?NULL,?thread,?NULL))?? ????????{?? ????????????cout?<<?"Create?thread?ess!"?<<?endl;?? ????????}?? ????????else?? ????????{?? ????????????cout?<<?"Create?thread?failed!"?<<?endl;?? ????????}?? ????????pthread_join(id,?NULL);?? ????????pthread_mutex_destroy(&mutex);?? ????????return?0;?? ????}?? ????//编译:g++?-o?thread?testthread.cpp?-lpthread

互斥锁的设置范围

pthread_mutexattr_setpshared(3C)可用来设置互斥锁变量的作用域。

pthread_mutexattr_setpshared 语法 int pthread_mutexattr_setpshared(pthread_mutexattr_t *mattr, int pshared); #include <pthread.h> pthread_mutexattr_t mattr; int ret; ret = pthread_mutexattr_init(&mattr);/* * resetting to its default value: private */ ret = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_PRIVATE); 互斥锁变量可以是进程专用的(进程内)变量,也可以是系统范围内的(进程间)变量。

要在多个进程中的线程之间共享互斥锁,可以在共享内存中创建互斥锁,并将pshared属性设置为 PTHREAD_PROCESS_SHARED。

此行为与最初的 Solaris 线程实现中mutex_init()中的 USYNC_PROCESS 标志等效。

如果互斥锁的pshared属性设置为 PTHREAD_PROCESS_PRIVATE,则仅有那些由同一个进程创建的线程才能够处理该互斥锁。

wordpress高级跨屏企业主题 wordpress绿色企业自适应主题

wordpress高级跨屏企业主题,通用响应式跨平台站点开发,自适应PC端+各移动端屏幕设备,高级可视化自定义设置模块+高效的企业站搜索优化。wordpress绿色企业自适应主题采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时支持移动终端的常用浏览器应...

SpinServers(月89美元) 2*e5-2630L v2,美国独立服务器

SpinServers服务商也不算是老牌的服务商,商家看介绍是是2018年成立的主机品牌,隶属于Majestic Hosting Solutions LLC旗下。商家主要经营独立服务器租用和Hybrid Dedicated服务器等,目前包含的数据中心在美国达拉斯、圣何塞机房,自有硬件和IP资源等,商家还自定义支持用户IP广播到机房。看到SpinServers推出了美国独服的夏季优惠促销活动,最低月...

腾讯云轻量应用服务器关于多个实例套餐带宽

腾讯云轻量应用服务器又要免费升级配置了,之前已经免费升级过一次了(腾讯云轻量应用服务器套餐配置升级 轻量老用户专享免费升配!),这次在上次的基础上再次升级。也许这就是良心云吧,名不虚传。腾讯云怎么样?腾讯云好不好。腾讯云轻量应用服务器 Lighthouse 是一种易于使用和管理、适合承载轻量级业务负载的云服务器,能帮助个人和企业在云端快速构建网站、博客、电商、论坛等各类应用以及开发测试环境,并提供...

pthread_t为你推荐
qq博客怎么开QQ博客啊oa办公系统下载oa办公软件哪里可以下载?12种颜色12种颜色的英语怎么写,用中文怎么读防火墙排名什么防火墙最好熊猫烧香病毒下载谁知道熊猫烧香病毒云计划云计划创富平台怎么样?有谁知道。介绍一下。微软操作系统下载怎么下载官方win10 64位镜像系统单元测试规范如何做好小学数学单元测试工作移动硬盘文件或目录损坏且无法读取移动硬盘提示文件或目录损坏且无法读取,怎么修复电子邮件软件常用的邮件收发软件
深圳域名注册 vps优惠码cnyvps a2hosting 便宜服务器 softlayer windows主机 网络星期一 轻博 百兆独享 qq对话框 卡巴斯基免费试用 优酷黄金会员账号共享 smtp虚拟服务器 空间登入 国外在线代理服务器 免费的域名 xshell5注册码 腾讯云平台 建站技术 美国vpn代理 更多