c语言下多线程

简介: 原文:c语言下多线程 【问题】创建了10个线程,10个线程公用一个线程体,创建如下: int t1=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,...
原文: c语言下多线程

【问题】创建了10个线程,10个线程公用一个线程体,创建如下:
int t1=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(" %d\n",i);
return 0;
}
按照正常的思维来说,这个显示的结果应该是从0-9(当然顺序可能有变化),但是不明原因,显示的时候,本来应该调用10次,但是却会显示11,12,13 次等不稳定结果【比如:2 1 0 3 5 4 6 6 4 7 8 9】,就是因为这个问题,俺跟杨哥搞了整整一天,直接摸不着头脑,臻哥还有508的伙也是对它没辙……

记得以前见过,在使用windows类库的前提下,c语言提供了两种多线程的方法,一种是CreateThread,另外一种是_beginthreadex.不然就换一种方法吧。
于是跑到508借了一本c编程,仔细看了一下_beginthreadex函数,它说默认情况下vc++中的c/c++运行期库不支持该函数,因为标准c中运行期库是没有多线程的概念。所以,我们必须对vc进行设置。
project--setting->c/c++->的Category对应的组合框中选择Code Generation类别,从user run-time library组合狂中选择Multithreaded DLL就可以了。 c语言下多线程
c语言下多线程

目录
相关文章
|
10月前
|
算法 C语言
C语言实现多线程
C语言实现多线程
177 0
|
Linux C语言
小白初识linux下的C语言多线程
小白初识linux下的C语言多线程
|
自然语言处理 Linux C语言
【C语言有什么用?②】制作一个多线程词频统计工具
【C语言有什么用?②】制作一个多线程词频统计工具
【C语言有什么用?②】制作一个多线程词频统计工具
|
C语言
C语言多线程中变量累加问题的分析
问题:请问下面程序中,main函数打印出的g_iTestInteger变量的值是多少? /********************************************************************** * 版权所有 (C)2015, Zhou Zhaoxiong。
978 0
|
C语言 Linux
生产者消费者问题 伪代码和C语言多线程实现
生产者消费者问题是操作系统中的一个经典的问题。 他描述的是一个,多个生产者与多个消费者共享多个缓冲区的事情,具体的定义百度。 然后看了操作系统的书籍如何解决书上给的伪代码是这样的 item B[k]; semaphore empty; empty...
2696 0
|
API C语言 Windows
C语言多线程编程
原文:C语言多线程编程 注:本文内容来源于互联网,感谢作者整理! Windows的多线程编程 c语言 在Windows的多线程编程中,创建线程的函数主要有CreateThread和_beginthread(及_beginthreadex)。
983 0
|
Unix Linux C语言
Linux下C语言多线程,网络通信简单聊天程序
原文:Linux下C语言多线程,网络通信简单聊天程序 功能描述:程序应用多线程技术,可是实现1对N进行网络通信聊天。但至今没想出合适的退出机制,除了用Ctr+C。出于演示目的,这里采用UNIX域协议(文件系统套接字),程序分为客户端和服务端。
960 0
|
16天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
26 0
|
1天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)