资源简介
在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 任务三\
相关资源
- 编写简单的RMI程序 多线程web 服务器
- linux下用多进程同步方法解决生产者
- 多线程生产者消费者模式
- 多线程实例:桌面智能弹球小游戏
- WPF多线程演示
- 易语言:多线程传多变量的最稳定方
- 排队买票多线程问题
- 强大的完善的 活动抽奖系统适合各单
- 十字路口红绿灯交通情况模拟
- Qt 多线程连接数据库——数据库
- 易语言多线程端口扫描源码
- POSIX多线程程序设计中文版源码
- 易语言md5定向爆破源码
- 多线程扫描工具
- Delphi.High.Performance.Applications.Concurren
- Qt5的多线程小程序,实现按钮开关线
- 控制台串口通信程序
- POSIX多线程程序设计中文版pdf
- 使用多线程及图像分块实现图像处理
- 图像处理中使用多线程及图像分块实
- p2p文件共享系统 含代码和文档
- 武汉理工大学面向对象与多线程综合
- 多线程编程指南[中文完整翻译版] –
- QT多线程实现图片以缩略图形式显示
- qt利用线程实现多任务
- 基于socket的多线程QQ聊天系统(代码
- UDP socket 多线程
- linux多线程编程书籍
- 串口通信+多线程+数据错乱自动恢复
- VC五子棋源代码 想要的速度下哦 多线
评论
共有 条评论