多线程题目
来源:互联网 发布:mac系统截屏快捷键 编辑:程序博客网 时间:2024/06/05 04:41
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define NUM 4
pthread_mutex_t mutex;
pthread_cond_t cond;
int n = 0;
void *thread_func(void *argv)
{
int p = (int)argv;
int i;
for(i = 0; i < 10; i++)
{
pthread_mutex_lock(&mutex);
while(p != n)
{
pthread_cond_wait(&cond,&mutex);
}
printf("%d ",p+1);
n= (n + 1) % NUM;
pthread_mutex_unlock(&mutex);
pthread_cond_broadcast(&cond);
}
}
int main()
{
pthread_t tid[NUM];
int ret;
int i;
pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);
for(i = 0; i< NUM; i++)
{
ret = pthread_create(&tid[i],NULL,thread_func,(void *)i);
if(ret == -1)
{
printf("pthread_create pid[%d] error!\n",i);
exit(-1);
}
}
for(i = 0; i < NUM; i++)
{
ret = pthread_join(tid[i],NULL);
if(ret == -1)
{
printf("pthread_join pid[%d] error!\n",i);
exit(-1);
}
}
printf("\n");
return 0;
}
#include <stdlib.h>
#include <pthread.h>
#define NUM 4
pthread_mutex_t mutex;
pthread_cond_t cond;
int n = 0;
void *thread_func(void *argv)
{
int p = (int)argv;
int i;
for(i = 0; i < 10; i++)
{
pthread_mutex_lock(&mutex);
while(p != n)
{
pthread_cond_wait(&cond,&mutex);
}
printf("%d ",p+1);
n= (n + 1) % NUM;
pthread_mutex_unlock(&mutex);
pthread_cond_broadcast(&cond);
}
}
int main()
{
pthread_t tid[NUM];
int ret;
int i;
pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);
for(i = 0; i< NUM; i++)
{
ret = pthread_create(&tid[i],NULL,thread_func,(void *)i);
if(ret == -1)
{
printf("pthread_create pid[%d] error!\n",i);
exit(-1);
}
}
for(i = 0; i < NUM; i++)
{
ret = pthread_join(tid[i],NULL);
if(ret == -1)
{
printf("pthread_join pid[%d] error!\n",i);
exit(-1);
}
}
printf("\n");
return 0;
}
0 0
- 多线程题目
- 多线程题目
- 多线程并发题目
- 实验题目:多线程
- 多线程经典题目
- 多线程:常见题目
- java多线程经典题目
- 多线程基础题目
- 经典的多线程题目
- C 多线程题目
- Java多线程题目
- 多线程题目解答
- Java多线程的题目
- 多线程题目探索
- 多线程练习题目
- 【多线程】秒杀多线程面试题目
- [求职面试][多线程]多线程题目汇总
- 多线程练习题目--利用多线程打印数字
- 蛇形输出一段数字
- mac officeWord2016 安装并激活
- 安卓系统传感器的使用
- 打开远程桌面连接
- Spring MVC通过JSON实现前后台数据交互
- 多线程题目
- 屏幕截图小软件的编写——WINDOWS API
- go http transfer.go学习
- 高效使用Google
- js学习笔记:数据存储
- ARM第五天(串口下)
- chrome浏览器调试
- jQuery 获取当前节点的html包含当前节点的方法 --$(".test").prop("outerHTML");
- SSH 免登录