资源简介
在linux上分别用多进程和多线程实现的同步互斥操作(源代码)
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include /* For O_* constants */
#include /* For mode constants */
#include
#include
sem_t *sem1*sem2*sem3*sem4*sem5*sem6*sem7;
pthread_t p1p2p3p4p5p6;
const int T=5;
void get_sem(void);
void inite(void);
void creat_pthread(void);
void *P1(void* arg);
void* P2(void*);
void *P3(void*);
void *P4(void*);
void* P5(void*);
void *P6(void*);
void join(void);
int main()
{
get_sem();
inite();
creat_pthread();
join();
return 0;
}
void get_sem(void)
{
if((sem1 = sem_open(“sem1“ O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem1 error!\n“);
}
if((sem2 = sem_open(“sem2“ O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem2 erroe!\n“);
}
if((sem3 = sem_open(“sem3“O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem3 erroe!\n“);
}
if((sem4 = sem_open(“sem4“ O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem4 error!\n“);
}
if((sem5 = sem_open(“sem5“O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem5 erroe!\n“);
}
if((sem6 = sem_open(“sem6“O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem6 erroe!\n“);
}
if((sem7 = sem_open(“sem7“O_RDWR|O_CREAT 0666)) == SEM_FAILED){
perror(“semget sem7 erroe!\n“);
}
return ;
}
void inite(void)
{
if(sem_init(sem1 0 0)<0){
perror(“inite sem1 error!\n“);
}
if(sem_init(sem2 0 0)<0){
perror(“inite sem2 error!\n“);
}
if(sem_init(sem3 0 0)<0){
perror(“inite sem3 error!\n“);
}
if(sem_init(sem4 0 0)<0){
perror(“inite sem4 error!\n“);
}
if(sem_init(sem5 0 0)<0){
perror(“inite sem1 error!\n“);
}
if(sem_init(sem6 0 0)<0){
perror(“inite sem1 error!\n“);
}
if(sem_init(sem7 0 0)<0){
perror(“inite sem7 error!\n“);
}
return ;
}
void creat_pthread(void)
{
if(pthread_create(&p1NULL&P1NULL)){
printf(“error ctreating thread“);
abort();
}
if(pthread_create(&p2NULL&P2NULL)){
printf(“error ctreating thread“);
abort();
}
if(pthread_create(&p3NULLP3NULL)){
printf(“error ctreating thread“);
abort();
}
if(pthread_create(&p4NULLP4NULL)){
printf(“error ctreating thread“);
abort();
}
if(pthread_create(&p5NULLP5NULL)){
printf(“error ctreating thread“);
abort();
}
if(pthread_create(&p6NULLP6NULL)){
printf(“error ctreating thread“);
abort();
}
return ;
}
void* P1(void *arg)
{
int t=T;
while(t--)
{
printf(“I am thread 1\n“);
sleep(1);
}
if(sem_post(sem1) == -1){
perror(“线程2的 V操作错误\n“);
}
if(sem_post(sem2) == -1){
perror(“线程3的 V操作错误\n“);
}
return NULL;
}
void* P2(void *arg)
{
int t=T;
if(sem_wait(sem1) == -1){
perror(“线程2的 P操作错误\n“);
}
while(t--)
{
printf(“I am thread 2\n“);
sleep(1);
}
if(sem
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15261 2013-04-18 03:25 任务三\多线程实现同步互斥\thread
文件 4517 2012-06-13 03:43 任务三\多线程实现同步互斥\thread.cpp
文件 84 2013-04-18 03:25 任务三\多线程实现同步互斥\makefile
文件 420 2012-06-13 08:48 任务三\多进程实现同步互斥\makefile
文件 7473 2012-06-13 09:30 任务三\多进程实现同步互斥\P1
文件 297 2012-06-13 08:27 任务三\多进程实现同步互斥\P1.cpp
文件 7509 2012-06-13 09:30 任务三\多进程实现同步互斥\P2
文件 338 2012-06-13 09:29 任务三\多进程实现同步互斥\P2.cpp
文件 7473 2012-06-13 09:30 任务三\多进程实现同步互斥\P3
文件 297 2012-06-13 09:29 任务三\多进程实现同步互斥\P3.cpp
文件 7473 2012-06-13 09:30 任务三\多进程实现同步互斥\P4
文件 297 2012-06-13 09:29 任务三\多进程实现同步互斥\P4.cpp
文件 7509 2012-06-13 09:30 任务三\多进程实现同步互斥\P5
文件 338 2012-06-13 07:09 任务三\多进程实现同步互斥\P5.cpp
文件 7473 2012-06-13 09:30 任务三\多进程实现同步互斥\P6
文件 297 2012-06-13 07:09 任务三\多进程实现同步互斥\P6.cpp
文件 377 2012-06-13 09:30 任务三\多进程实现同步互斥\PV.cpp
文件 218 2012-06-13 07:09 任务三\多进程实现同步互斥\PV.h
文件 15113 2013-04-18 03:26 任务三\多进程实现同步互斥\sysv
文件 4665 2012-06-13 09:29 任务三\多进程实现同步互斥\sysv.cpp
目录 0 2013-04-18 04:26 任务三\多线程实现同步互斥\
目录 0 2013-04-18 04:25 任务三\多进程实现同步互斥\
目录 0 2013-04-18 04:26 任务三\
相关资源
- 理发师问题的实现
- Qt界面多线程opencv调用摄像头
- 智慧大棚QT界面设计
- 多线程获取kinect2.0 视频并保存身体点
- Socket和多线程的聊天室
- 基于Linux的消息队列及多线程编程实现
- 一个简单的基于TCP的多线程聊天程序
- GTK多线程聊天工具
- delphi写的自动升级演示 多线程+http服
- dpdk的多线程抓包使用方式
- 京东多线程版易语言源码
- linux C 多线程编程典型
- Qt 多线程及简单 demo
- delphi7 多线程测试40个线程
- 多线程http服务器实现流程图
- 支持多线程断点续传的文件传输(F
- linux多线程程序实验,用不同线程完成
- 多线程实验 操作系统
- linux多线程+UDP网络通信总结+程序
- 三缓冲区 多线程处理抓包
- Qt线程间通信,线程控制界面显示
- pthread+多线程编程技术.pdf
- Qt多线程教程.rar
- VC中利用多线程技术实现线程之间的通
- 多线程依次循环打印26个英文字母
- DllMain和多线程死锁 问题
- QT的多线程编程
- 文件搜索器多线程的搜索器
- boost asio异步多线程接收demo
- Qt子线程更新数据发到主线程显示.r
评论
共有 条评论