- 6
- 0
- 约7.89千字
- 约 6页
- 2017-06-12 发布于河南
- 举报
C语言多线程程实例
linux下C语言多线程编程实例
2007年11月29日 星期四 10:39
学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。下面是我们的代码:
/*thread_example.c : c multiple thread programming in linux
*author : falcon
*E-mail : tunzhj03@
*/
#include pthread.h
#include stdio.h
#include sys/time.h
#include string.h
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void *thread1()
{
printf (thread1 : Im thread 1\n);
for (i = 0; i MAX; i++)
{
printf(thread1 : number = %d\n,number);
pthread_mutex_lock(mut);
number++;
pthread_mutex_unlock(mut);
sleep(2);
}
printf(thread1 :主函数在等我完成任务吗?\n);
pthread_exit(NULL);
}
void *thread2()
{
printf(thread2 : Im thread 2\n);
for (i = 0; i MAX; i++)
{
printf(thread2 : number = %d\n,number);
pthread_mutex_lock(mut);
number++;
pthread_mutex_unlock(mut);
sleep(3);
}
printf(thread2 :主函数在等我完成任务吗?\n);
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(thread, 0, sizeof(thread)); //comment1
/*创建线程*/
if((temp = pthread_create(thread[0], NULL, thread1, NULL)) != 0) //comment2
printf(线程1创建失败!\n);
else
printf(线程1被创建\n);
if((temp = pthread_create(thread[1], NULL, thread2, NULL)) != 0) //comment3
printf(线程2创建失败);
else
printf(线程2被创建\n);
}
void thread_wait(void)
{
/*等待线程结束*/
if(thread[0] !=0) { //comment4
pthread_join(thread[0],NULL);
printf(线程1已经结束\n);
}
if(thread[1] !=0) { //comment5
pthread_join(thread[1],NULL);
printf(线程2已经结束\n);
}
}
int main(
您可能关注的文档
最近下载
- 我国服务型政府建设问题探析——以A省为例.doc
- 智能网联汽车技术专业《智能传感器装调与测试》课程标准.docx VIP
- 辽宁石油化工大学无机化学考试题.doc VIP
- GB_T51357-2019:城市轨道交通通风空气调节与供暖设计标准.pdf VIP
- 光伏电站集电线路施工组织设计方案.pdf VIP
- 钢结构构造与识图(第2版) 课件 单元6 门式刚架主结构构造与识图.ppt
- 内经气阴阳五行演示文稿.pptx VIP
- 普通生态学 第四章群落生态学 第五章生态系统生态学课件.ppt
- AQ4273-2016 粉尘爆炸危险场所用除尘系统安全技术规范.docx VIP
- 家纺店合作合同协议.docx VIP
原创力文档

文档评论(0)