linux 多线程编程-读写者问题
#include <cstdio>
#include <pthread.h>
#include <unistd.h> int buffer[];
int i,j; pthread_rwlock_t rwlock; void *writefun(void *arg)
{
int pid = pthread_self();
printf("写者%d 进入等待状态 。。。。\n",pid);
pthread_rwlock_wrlock(&rwlock);
printf("写者%d 写>>>\n",pid);
sleep();
printf("写者%d 写结束\n",pid);
pthread_rwlock_unlock(&rwlock);
return NULL;
} void *readfun(void *arg)
{
int pid = pthread_self();
printf("读者%d 进入等待状态。。。。\n",pid);
pthread_rwlock_rdlock(&rwlock);
printf("读者%d 读<<<\n",pid);
sleep();
printf("读者%d 读结束\n",pid);
pthread_rwlock_unlock(&rwlock);
return NULL;
} int main()
{
pthread_t pread[],pwrite;
pthread_create(&pwrite,NULL,writefun,);
for(int i=; i < ; i++)
pthread_create(&pread[i],NULL,readfun,); pthread_join(pwrite,NULL);
for(int i = ; i < ; i++)
pthread_join(pread[i],NULL);
return ;
} 编译选项 g++ -lpthread -o main main.cpp
./main
linux 多线程编程-读写者问题的更多相关文章
- Linux多线程编程阅读链接
1. 进程与线程的一个简单解释(阮一峰) 2. linux 多线程编程 3. Linux 的多线程编程的高效开发经验 (IBM)
- Linux多线程编程和Linux 2.6下的NPTL
Linux多线程编程和Linux 2.6下的NPTL 在Linux 上,从内核角度而言,基本没有什么线程和进程的区别--大家都是进程.一个进程的多个线程只是多个特殊的进程他们虽然有各自的进程描述结构, ...
- Linux多线程编程小结
Linux多线程编程小结 前一段时间由于开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,非常烦躁的说,如今抽个时间把之前所学的做个小节.文章内容主要总结于<Linux程序 ...
- Linux多线程编程初探
Linux线程介绍 进程与线程 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程 ...
- ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程
为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用 (2009-10-27 11:07:23) 转载▼ 标签: 杂谈 分类: 计算机 举一个例子(http:// ...
- 【操作系统作业-lab4】 linux 多线程编程和调度器
linux多线程编程 参考:https://blog.csdn.net/weibo1230123/article/details/81410241 https://blog.csdn.net/skyr ...
- Linux多线程编程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...
- Linux多线程编程之详细分析
线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步.互斥,这些东西将在本文中介绍.我见到这样一道面试题: 是否熟悉POSIX多线程 ...
- linux多线程编程(转)
原文地址:http://www.cnblogs.com/BiffoLee/archive/2011/11/18/2254540.html 1.Linux“线程” 进程与线程之间是有区别的,不过Linu ...
随机推荐
- HttpRuntime Cache用法及参数解释
自己用到的: HttpRuntime.Cache.Insert("SchoolBindKcChangci", SchoolBindKcChangci, null, DateTime ...
- .NET EF 框架-实现增删改查
声明一个EF上下文对象 Model dbContext=new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact =new Contact(); ...
- NightWatchJS(转)
关于Nightwatch? Nightwatch.js是一个测试web app和web 站点的自动化测试框架, 使用Node.js编写, 基于Selenium WebDriver API. 它是一个完 ...
- python 基础 2.6 break用法
python中最基本的语法格式大概就是缩进了.python中常用的循环:for循环,if循环.一个小游戏说明for,if ,break的用法. 猜数字游戏: 1.系统生成一个20以内的随机数 2.玩家 ...
- EasyNVR无插件直播服务如何配合EasyBMS使用以及实现流媒体管理功能概述
本文转自:https://blog.csdn.net/black_3717/article/details/79769195 功能概要: 1.摄像机的无插件直播: 2.摄像机的低延时直播: 3.摄像机 ...
- LRM-00109: could not open parameter file
SQL>startup ...
- 【zabbix】Windows服务器获取IIS站点以及程序池状态
在使用zabbix做Windows服务器监控的时候遇到一个比较棘手的问题,检测IIS站点状态. 普通情况下,只要用浏览器访问iis站点测试一下返回码是不是200即可判断状态,但是我这次遇到的是iis使 ...
- Swift 烧脑体操(一) - Optional 的嵌套
前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...
- jQuery+CSS3动画相册特效
在线演示 本地下载
- oops信息的分析【转】
本文转载自:https://blog.csdn.net/zhangchiytu/article/details/8303172 oops是英语口语"糟糕"的意思,当LINUX 内核 ...