c语言下多线程 c语言多线程编程

【问题】创建了10个线程,10个线程公用一个线程体,创建如下:intt1=0,t2=1,t3=2,t4=3,t5=4,t6=5,t7=6,t8=7,t9=8,t10=9; int*one=&t1,*two=&t2,*three=&t3,*four=&t4,*five=&t5,*six=&t6,*seven=&t7,*eight=&t8,*nine=&t9,*ten=&t10;thread[3]=CreateThread(NULL,0,processQueue,one,0,NULL);thread[4]=CreateThread(NULL,0,processQueue,two,0,NULL);thread[5]=CreateThread(NULL,0,processQueue,three,0,NULL);thread[6]=CreateThread(NULL,0,processQueue,four,0,NULL);thread[7]=CreateThread(NULL,0,processQueue,five,0,NULL);thread[8]=CreateThread(NULL,0,processQueue,six,0,NULL);thread[9]=CreateThread(NULL,0,processQueue,seven,0,NULL);thread[10]=CreateThread(NULL,0,processQueue,eight,0,NULL);thread[11]=CreateThread(NULL,0,processQueue,nine,0,NULL);thread[12]=CreateThread(NULL,0,processQueue,ten,0,NULL);DWORD WINAPI processQueue(LPVOID lp){//注意,读队列的时候,一定要free空间。int i=*((int *)lp);printf(" %dn",i);return 0;}按照正常的思维来说,这个显示的结果应该是从0-9(当然顺序可能有变化),但是不明原因,显示的时候,本来应该调用10次,但是却会显示11,12,13次等不稳定结果【比如:2 1 0 3 5 4 6 6 4 7 89】,就是因为这个问题,俺跟杨哥搞了整整一天,直接摸不着头脑,臻哥还有508的伙也是对它没辙……
记得以前见过,在使用windows类库的前提下,c语言提供了两种多线程的方法,一种是CreateThread,另外一种是_beginthreadex.不然就换一种方法吧。于是跑到508借了一本c编程,仔细看了一下_beginthreadex函数,它说默认情况下vc++中的c/c++运行期库不支持该函数,因为标准c中运行期库是没有多线程的概念。所以,我们必须对vc进行设置 。project--setting->c/c++->的Category对应的组合框中选择CodeGeneration类别,从user run-time library组合狂中选择MultithreadedDLL就可以了。

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/254133.html

更多阅读

linux 下多线程编程 linux下的多线程编程

共13章:第一章 线程基础multithreading可以被翻译成多线程控制。与传统的UNIX不同,一个传统的UNIX进程包含一个单线程,而多线程(MT)则把一个进程分成很多可执行线程,每一个线程都独立运行。阅读本章可以让你理解:Defining Multithreading T

Linux下Qt多线程编程 linux下的多线程编程

作者:武汉华嵌技术部以下和大家分享Linux平台下Qt两种多线程编程的方式:1、使用Linux平台下的线程函数。以下是给出的代码片段://此处为连接信号和槽,通过Qt界面中两按钮来控制两个槽函数connect(pthred1start, SIGNAL(clicked()), this

linux下多版本gcc共存问题 linux gcc版本

使用文件链接ln -s GCC-3.4 GCC,再GCC -v查看,果然调用3.4成功~一个安装gcc 的例子==============================參考:::2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语

声明:《c语言下多线程 c语言多线程编程》为网友少年与猫分享!如侵犯到您的合法权益请联系我们删除