linux线程5(百度知道上一道题)
2015-09-15 14:31
621 查看
题目:1+2+3+...+30000,在加的过程中,要使用3个多线程完成,并且全部计算好以后,得出最终的和数。
这题比较简单,都没用到条件,感觉互斥锁也可以不用的,但是结果不对,下面是我写的一种实现。
不用互斥锁的话,三个线程相互并发覆盖对方的运行结果,造成错误。
这题比较简单,都没用到条件,感觉互斥锁也可以不用的,但是结果不对,下面是我写的一种实现。
不用互斥锁的话,三个线程相互并发覆盖对方的运行结果,造成错误。
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <string.h> pthread_mutex_t mutex; //互斥量 pthread_t tid[3]; void *threadFun(void *arg); //完成10000个数相加 long result=0; int main() { for(int i=0;i<3;i++) { pthread_create(&tid[i],NULL,threadFun,(void*)i); } for(int i=0;i<3;i++) { pthread_join(tid[i],NULL); } printf("%ld\n",result); return 0; } void *threadFun(void *arg) { int i; long index=(long)arg; for(i=index*10000+1;i<=(index+1)*10000;i++) { pthread_mutex_lock(&mutex); result+=i; pthread_mutex_unlock(&mutex); } }
相关文章推荐
- CentOS 6.5系统搭建SVN服务
- linux线程4(google面试题)
- 史上最详细的虚拟机上安装Linux教程
- linux命令行安装matlab
- Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决
- linux下使用ramdisk的一点认识
- centos7下使用yum安装mysql
- Linux鸟哥私房菜学习笔记--第九章
- Linux 下安装ffmpeg(xlib264 yams)
- Linux 下ffmpeg的安装(xlib264 yams)
- CentOS 安装python MySQLdb模块
- 左右GNU Linux企业加密文件系统 eCryptfs简介
- linux挂载光盘
- unix/linux共享内存应用与陷阱
- linux下彻底卸载MySQL
- 马哥-51CTO-Linux培训-0905-Linux任务计划
- window程序移植到linux(二)
- 学习重新编译Linux内核
- Linux环境下,traceroute返回一系列*原因分析
- CentOS6.5手动升级gcc4.8.2