18.C语言多线程总结
- 创建一个线程
_beginthread(myfun, , NULL);//返回值是一个HANDLE
hd[i] = CreateThread(NULL, , add, NULL, , NULL);//创建线程
- 线程内部结束
_endthread()
- 外部暂停线程
SuspendThread(hd[]);
- 外部恢复线程
ResumeThread(hd[]);
- 外部结束一个线程
ExitThread(th[]);
- 创建临界区
CRITICAL_SECTION cs1;
临界区支持的最大线程数为64
- 初始化临界区
InitializeCriticalSection(&cs1);
- 进入临界区
EnterCriticalSection(&cs1);
- 离开临界区
LeaveCriticalSection(&cs1);
一个示例,一百个线程每个线程对一个变量进行操作
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define N 64//临界区最大线程64 CRITICAL_SECTION cs1 ;//定义临界区 int num = ;//多线程访问会造成冲突,要用到临界区 DWORD WINAPI myfun(void *p)
{
//进入临界区
EnterCriticalSection(&cs1);
for (int i = ; i < ; i++)
{
num++;
}
//离开临界区
LeaveCriticalSection(&cs1);
return ;
} void main()
{
//初始化临界区
InitializeCriticalSection(&cs1);
//线程数组
HANDLE hd[N];
for (int i = ; i < N; i++)
{
//数组每一个元素都是一个线程
//hd[i] = (HANDLE)_beginthread(myfun, 0, NULL);
hd[i]=CreateThread(NULL, , myfun, NULL, , NULL);
//WaitForSingleObject(hd[i], INFINITE);//等一个线程退出再执行
}
//等待所有的线程退出
WaitForMultipleObjects(N, hd, TRUE, INFINITE); printf("%d\n", num); //删除临界区
DeleteCriticalSection(&cs1);
system("pause");
}
18.C语言多线程总结的更多相关文章
- 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解
Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解 多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...
- C 语言多线程与锁机制
C 语言多线程与锁机制 多线程 #include <pthread.h> void *TrainModelThread(void *id) { ... pthread_exit(NULL) ...
- linux下C语言多线程编程实例
用一个实例.来学习linux下C语言多线程编程实例. 代码目的:通过创建两个线程来实现对一个数的递加.代码: //包含的头文件 #include <pthread.h> #include ...
- C语言 多线程测试
1.CreateThread 在主线程的基础上创建一个新线程 2.WaitForMultipleObjects 主线程等待子线程 3.CloseHandle 关闭线程 // testThread.cp ...
- c语言多线程队列读写
最近用c语言写了个简单的队列服务,记录一下,文件结构为 main.c queue.c queue.h,代码如下: 主函数 #define NUM_THREADS 200 #include <st ...
- C语言多线程编程
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUT ...
- c#语言-多线程中的锁系统(一)
介绍 平常在多线程开发中,总避免不了线程同步.本篇就对net多线程中的锁系统做个简单描述. 目录 一:lock.Monitor 1:基础. 2: 作用域. ...
- C语言多线程的一个简单例子
多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...
- C语言多线程pthread库相关函数说明
线程相关操作说明 一 pthread_t pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义: typedef unsigned long int pth ...
随机推荐
- 洛谷——P1966 火柴排队
https://www.luogu.org/problem/show?pid=1966 题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列 ...
- zookeeper_相关命令 以及 API
(区分大小写) 启动ZooKeeper服务 进入主目录下的 /bin 文件夹. zkServer.sh start. 需要每个节点运行启动命令 客户端启动 zkCli ...
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
1.头部布局文件top.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- vue25---vue2.0变化
组件模版: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- js 判断对touch事件支持
$.support = (function() { var support = { touch: !!(('ontouchstart' in window) || window.DocumentTou ...
- Linux常用系统管理软件
1.BleachBit是一款开源的系统清理工具,它可以释放磁盘空间,保护您的隐私,清除缓存,删除cookies.internet历史.临时文件.日志和丢弃的垃圾文件等,支持清除应用的残留数据,切碎文件 ...
- codeforces 140E.New Year Garland
传送门: 解题思路: 要求相邻两行小球颜色集合不同,并且限制行内小球相邻不同. 由此可得:每行小球排列都是独立与外界的, 所以答案应该是对于所有行的颜色集合分类,在将行内的答案乘到上面. 先考虑如何分 ...
- Image与byte[]数组的相互转换
近期项目有个需求是关于图片操作的,须要将图片保存到数据库中.经过尝试才知道Image类型文件是不能直接存储到数据库中的.保存之前须要我们做一步转换:将Image转换成字节数组类型Byte ...
- ios in-house 公布整个过程(startssl认证)
首先大体说一下步骤: 1.申请苹果enterprise 账号 为应用生成app id,provision profile等 详见:http://www.th7.cn/Program/IOS/20131 ...
- modSecurity规则学习(三)——SecRule
通用格式 SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS] 阶段phase (1)request headers (2) ...