C语言 多线程测试

1、CreateThread 在主线程的基础上创建一个新线程

2、WaitForMultipleObjects 主线程等待子线程

3、CloseHandle 关闭线程

 1 // testThread.cpp : 定义控制台应用程序的入口点。
 2
 3 #include "stdafx.h"
 4 #include "windows.h"
 5
 6 #define MAX_THREADS 3
 7
 8 //子线程函数
 9 DWORD WINAPI ThreadFun(LPVOID pM)
10 {
11     printf("\n我是子线程:%d\n",pM);
12     printf("子线程的线程ID号为:%d\n", GetCurrentThreadId());
13     return 0;
14 }
15
16 int _tmain(int argc, _TCHAR* argv[])
17 {
18     printf("我是主线程\n");
19
20     //HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
21     //WaitForSingleObject(handle, INFINITE);
22
23     HANDLE hThread[MAX_THREADS];
24     int i;
25     for(i = 0; i < MAX_THREADS; i++){
26         hThread[i] = CreateThread(NULL, 0, ThreadFun,(LPVOID *) i, 0, NULL);  //创建多线程
27     }
28     if(hThread[i]==NULL)
29     {
30         ExitProcess(i);//退出进程
31     }else{
32         printf("hThread:,%d\n",hThread[i]);
33     }
34
35     WaitForMultipleObjects(MAX_THREADS,hThread,TRUE,INFINITE);//主线程等待子线程结束
36
37     for(i = 0; i < MAX_THREADS; i++){
38          CloseHandle(hThread[i]);//关闭线程
39     }
40
41     return 0;
42 }

测试结果如下:

时间: 2024-11-08 04:54:43

C语言 多线程测试的相关文章

Junit使用GroboUtils进行多线程测试

写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的.JVM都终止了,在测试线程启动的其他线程自然也无法执行.JunitCore代码如下: /**       * Run the tests contained in the classes named in the <code>args</code>.       * If all tests run successfully,

C语言多线程编程

原文:C语言多线程编程 注:本文内容来源于互联网,感谢作者整理! Windows的多线程编程 c语言 在Windows的多线程编程中,创建线程的函数主要有CreateThread和_beginthread(及_beginthreadex). CreateThread 和 ExitThread    使用API函数CreateThread创建线程时,其中的线程函数原型:  DWORD WINAPI ThreadProc(LPVOID lpParameter);在线程函数返回后,其返回值用作调用Ex

Linux下C语言多线程,网络通信简单聊天程序

原文:Linux下C语言多线程,网络通信简单聊天程序 功能描述:程序应用多线程技术,可是实现1对N进行网络通信聊天.但至今没想出合适的退出机制,除了用Ctr+C.出于演示目的,这里采用UNIX域协议(文件系统套接字),程序分为客户端和服务端.应用select函数来实现异步的读写操作. 先说一下服务端:首先先创建套接字,然后绑定,接下进入一个无限循环,用accept函数,接受“连接”请求,然后调用创建线程函数,创造新的线程,进入下一个循环.这样每当有一个新的“连接”被接受都会创建一个新的线程,实现

转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解 多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群.如果您对这些都没什么概念,可能需要先了解一些基础知识) 关于条件变量典型的实际应用,可以参考非常精简的Linux线程池实现(一)——使用互斥锁和条件变量,但如果对条件变量不熟悉最好先看完本文. Pthread库的条件变量机制的主要API有三个: int p

从头开始-01.C语言环境测试

在Mac下编写C程序需要以下几步: 编写代码 a>编译:把C语言编译成0和1 b>工具:clang编译器 c>指令:cc -c 文件名.c      编译成功会生成一个. o目标文件 链接:其实就是把我们的.o目标文件跟系统自带的函数库合并在一起,生成一个可执行文件. 指令:cc 文件名.o 运行 ./a.out 具体实现步骤: 打开终端(launchpad->其他->终端,或者在实用工具中找) 打开终端,在桌面新建文件夹,然后建立一个C语言文件,再在其中写C语言程序 编写代

LinkedBlockingQueue多线程测试

public class FillQueueThread extends Thread { private Queue queue; public FillQueueThread(Queue queue){ this.queue = queue; } @Override public void run() { while(true){ try { boolean added = queue.offer(UUID.randomUUID().toString()); if(added) { Syst

关于JUnit4无法支持多线程测试的解决方法

转自:https://segmentfault.com/a/1190000003762719 其实junit是将test作为参数传递给了TestRunner的main函数.并通过main函数进行执行. test函数在main中执行.如果test执行结束,那么main将会调用System.exit(0);即使还有其他的线程在运行,main也会调用System.exit(0); System.exit()是系统调用,通知系统立即结束jvm的运行,即使jvm中有线程在运行,jvm也会停止的.所以会出现

多线程测试类

package base_class; import java.util.concurrent.CountDownLatch; /** * 多线程测试器 */ public class ManyThreadStarter { private int count; public ManyThreadStarter(){ count = 10000; } public ManyThreadStarter(int count){ this.count = count; } public void al

Java、Scala和Go语言多线程并发对比测试结果和结论

测试的最终结论: 综合性能测试和编码难易程度测试结果,本人从做项目的角度得出几点结论: 1. 对于Java程序员,如果没有强制性的必要,不需要转到Scala和Go语言,因为Java+AKKA2.0足够好用了,足以应付多线程高并发应用. 2. 对于Java程序员,如果程序应用于一般的多线程应用,并且性能要求不高,java的concurrent包也够用了. 3. 对于Java程序员,如果想让项目的代码量减少一半,学习成本不太高,性能也有保障的话,Scala语言是非常好的选择. 4. 对于Java程序