博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读写锁的例子
阅读量:7195 次
发布时间:2019-06-29

本文共 1280 字,大约阅读时间需要 4 分钟。

程序说明:

         线程a,b分别从字符串eg中取出一个字符,赋值给字符指针pro.

         线程c,d分别从pro中取出字符,并打印

         程序用读写锁对线程abcd进行同步

用到的读写锁函数有:

#include
int pthread_rwlock_rdlock(pthread_rwlock_t *rwptr); int pthread_rwlock_wrlock(pthread_rwlock_t *rwptr); int pthread_rwlock_unlock(pthread_rwlock_t *rwptr);

 

 

#include 
#include
#include
#include
#define RDNUM 2#define WRNUM 2char eg[]="I'm a test!";char *pro;struct { int i; pthread_rwlock_t mutex;}shared={ 0,PTHREAD_RWLOCK_INITIALIZER};void pthw(){ int len=strlen(eg)+1; int write_num=0; for(;;){ pthread_rwlock_wrlock(&shared.mutex); if(shared.i>=len) { pthread_rwlock_unlock(&shared.mutex); break; } pro[shared.i]=eg[shared.i]; shared.i++; write_num++; pthread_rwlock_unlock(&shared.mutex); sleep(1); } printf("进程%lu写了%d个字符\n",pthread_self(),write_num);}void pthr(){ int len=strlen(eg)+1; int read_num=0; for(;;){ pthread_rwlock_rdlock(&shared.mutex); if(shared.i>=len&&read_num==len) { pthread_rwlock_unlock(&shared.mutex); break; } while(read_num

运行结果:

     

转载于:https://www.cnblogs.com/sklww/p/3496745.html

你可能感兴趣的文章
linux dhcp配置服务
查看>>
关于 vSphere 监控和性能
查看>>
解决Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]的问题
查看>>
域控制器的强制卸载
查看>>
【NetApp】DS2246盘柜传感器位置信息
查看>>
mac/Linux源码安装TensorFlow
查看>>
我的友情链接
查看>>
css贝塞尔曲线模仿饿了么购物车小球动画
查看>>
win +iis+php
查看>>
如何清除srtsp错误
查看>>
软考中高项学员:2016年3月14日作业
查看>>
关于linux远程时等待时间长的优化
查看>>
我的友情链接
查看>>
括号匹配(二)
查看>>
oracle装好后默认的PLSExtProc是什么意思
查看>>
iptables rules
查看>>
生产环境下Hadoop大集群安装与配置+DNS+NFS
查看>>
【Android进阶学习】Popupwindow的应用
查看>>
Linux内核及内核模块
查看>>
细读shell-2
查看>>