预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本文由长春白癜风专科医院http://tf463.com/收集,转载请注明出处 linux下的C语言开发(多线程编程) 多线程和多进程还是有很多区别的。其中之一就是,多进程是linux内核本 身所支持的,而多线程则需要相应的动态库进行支持。对于进程而言,数据之间 都是相互隔离的,而多线程则不同,不同的线程除了堆栈空间之外所有的数据都 是共享的。说了这么多,我们还是自己编写一个多线程程序看看结果究竟是怎么 样的。 [cpp]viewplaincopy 1.#include<stdio.h> 2.#include<pthread.h> 3.#include<unistd.h> 4.#include<stdlib.h> 5. 6.voidfunc_1(void*args) 7.{ 8.while(1){ 9.sleep(1); 10.printf("thisisfunc_1!\n"); 11.} 12.} 13. 14.voidfunc_2(void*args) 15.{ 16.while(1){ 17.sleep(2); 18.printf("thisisfunc_2!\n"); 19.} 20.} 21. 本文长春白癜风专科医院http://tf463.com/收集,转载请注明出处 本文由长春白癜风专科医院http://tf463.com/收集,转载请注明出处 22.intmain() 23.{ 24.pthread_tpid1,pid2; 25. 26.if(pthread_create(&pid1,NULL,func_1,NULL)) 27.{ 28.return-1; 29.} 30. 31.if(pthread_create(&pid2,NULL,func_2,NULL)) 32.{ 33.return-1; 34.} 35. 36.while(1){ 37.sleep(3); 38.} 39. 40.return0; 41.} 和我们以前编写的程序有所不同,多线程代码需要这样编译,输入gcc thread.c-othread-lpthread,编译之后你就可以看到thread可执行文件,输 入./thread即可。 [cpp]viewplaincopy 1.[test@localhostDesktop]$./thread 2.thisisfunc_1! 3.thisisfunc_2! 4.thisisfunc_1! 本文长春白癜风专科医院http://tf463.com/收集,转载请注明出处 本文由长春白癜风专科医院http://tf463.com/收集,转载请注明出处 5.thisisfunc_1! 6.thisisfunc_2! 7.thisisfunc_1! 8.thisisfunc_1! 9.thisisfunc_2! 10.thisisfunc_1! 多线程和多进程还是有很多区别的。其中之一就是,多进程是linux内核本身 所支持的,而多线程则需要相应的动态库进行支持。对于进程而言,数据之间都 是相互隔离的,而多线程则不同,不同的线程除了堆栈空间之外所有的数据都是 共享的。说了这么多,我们还是自己编写一个多线程程序看看结果究竟是怎么样 的。 [cpp]viewplaincopy 1.#include<stdio.h> 2.#include<pthread.h> 3.#include<unistd.h> 4.#include<stdlib.h> 5. 6.voidfunc_1(void*args) 7.{ 8.while(1){ 9.sleep(1); 10.printf("thisisfunc_1!\n"); 11.} 12.} 13. 14.voidfunc_2(void*args) 15.{ 16.while(1){ 本文长春白癜风专科医院http://tf463.com/收集,转载请注明出处 本文由长春白癜风专科医院http://tf463.com/收集,转载请注明出处 17.sleep(2); 18.printf("thisisfunc_2!\n"); 19.} 20.} 21. 22.intmain() 23.{ 24.pthread_tpid1,pid2; 25. 26.if(pthread_create(&pid1,NULL,func_1,NULL)) 27.{ 28.return-1; 29.} 30. 31.if(pthread_create(&pid2,NULL,func_2,NULL)) 32.{ 33.return-1; 34.} 35. 36.while(1){ 37.sleep(3); 38.} 39. 40.return0; 41.} 和