当前位置: 首页 > wzjs >正文

成都高级网站建设推广引流平台app大全

成都高级网站建设,推广引流平台app大全,云商城之歌,南宁营销型网站建设公司创建线程 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以包含多个线程,但一个进程至少包含一个线程 基本概念 轻量级进程: 线程比进程更…

创建线程


什么是线程?

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以包含多个线程,但一个进程至少包含一个线程

基本概念

  1. 轻量级进程: 线程比进程更轻量,创建和销毁的开销更小
  2. 共享资源: 同一进程内的多个线程共享进程的内存空间和系统资源
  3. 独立执行流: 每个线程有自己的程序计数器、寄存器集合和栈
// 创建线程
#include <iostream>
#include <windows.h>using namespace std;DWORD WINAPI ThreadProce(LPVOID lpParameter) {cout << "helloWorld\n";return 0;
}int main() {HANDLE hThread = CreateThread(NULL, NULL, ThreadProce, NULL, NULL, NULL);system("pause");return 0;
}

CreateThread函数参数

HANDLE CreateThread(LPSECURITY_ATTRIBUTES   lpThreadAttributes, 		// 安全描述符SIZE_T                  dwStackSize,				// 设置堆栈的大小如为NULL则默认为1MBLPTHREAD_START_ROUTINE  lpStartAddress,			// 指向由线程执行的应用程序定义函数的指针LPVOID lpParameter,								// 指向要传递给线程的变量的指针DWORD                   dwCreationFlags,			// 控制线程创建的标志 (0:创建后,线程会立即运行 CREATE_SUSPENDED:线程以挂起状态创建,在调用 ResumeThread 函数之前不会运行 STACK_SIZE_PARAM_IS_A_RESERVATION:dwStackSize 参数 指定堆栈的初始保留大小。 如果未指定此标志,dwStackSize 指定提交大小)LPDWORD                 lpThreadId				// 指向接收线程标识符的变量的指针。 如果此参数 NULL,则不返回线程标识符
);

线程状态

线程有激发态(有信号状态)和非激发态(无信号状态)之分,正在运行的线程处于非激发态,线程结束就会处于激发状
WaitForSingleObject函数就是等待线程处于激发态

DWORD WaitForSingleObject(HANDLE hHandle,			// 线程句柄DWORD  dwMilliseconds		// 要等待的时间(毫秒),如果要一直等待则为INFINITE
);

当主线程结束时,子线程就算还未结束,子线程也会一起挂掉

线程相关API

  • CreatedThread 创建
  • OpenThread 打开
  • ExitThread 退出
  • TerminateThread 结束
  • SuspendThread 暂停
  • ResumeThread 恢复
  • GetExitCodeThread 得到线程的执行结果
#include <iostream>
#include <windows.h>
#include <TlHelp32.h>using namespace std;int main() {// 获取进程的线程列表HANDLE hThreadList = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);THREADENTRY32 threadInfo{ sizeof(THREADENTRY32) };BOOL isSucess = Thread32First(hThreadList, &threadInfo);if (isSucess) {do {if (threadInfo.th32OwnerProcessID == 28440) {// 是不是画图的进程cout << "线程ID:" << threadInfo.th32ThreadID << endl;HANDLE hThread = OpenThread(THREAD_ALL_ACCESS,NULL,threadInfo.th32ThreadID);//SuspendThread(hThread); // 挂起ResumeThread(hThread);	// 恢复}} while (Thread32Next(hThreadList, &threadInfo));}system("pause");return 0;
}

注:由于每个线程有自己的程序计数器、寄存器集合和栈,那它是怎么在切换时,知道每个寄存器当前的值的呢?答案是每一个线程都有一个上下文结构体,当它切换的时候都会把它的数据保存到这个结构体当中 CONTEXT (上下文)

设置获取线程上下文

// 获取线程上下文
BOOL GetThreadContext(HANDLE hThread,LPCONTEXT lpContext
);
// 设置线程上下文
BOOL SetThreadContext(HANDLE hThread;CONST CONTEXT *lpContext
);DWORD WINAPI ThreadProce(LPVOID lpParameter) {cout << "helloWorld\n";return 0;
}int main(){HANDLE hThread = CreateThread(NULL, NULL, ThreadProce, NULL, NULL, NULL);CONTEXT context; 	// 线程上下文结构体context.ContextFlags = CONTEXT_INTEGER;GetThreadContext();
}
http://www.dtcms.com/wzjs/293783.html

相关文章:

  • 深圳什么公司做网站好网络推广外包费用
  • 企业网站建设标准如何做网站推广广告
  • 网站排名优化要多少钱seo公司seo教程
  • 两性做受技巧视频网站自己制作一个网页
  • wordpress 添加登录界面怎样进行seo
  • 男女做暖暖的网站大全国内十大软件培训机构
  • 在哪个网站找地理题做排名函数
  • 网站如何防盗链如何联系百度人工客服电话
  • 用wordpress做购物网站详细描述如何进行搜索引擎的优化
  • 兰州市做网站的专业的网页制作公司
  • 淘宝网可以做网站吗萧山区seo关键词排名
  • 网站构建器北京软件开发公司
  • 网站建设ppt百度文库网络营销自学网站
  • 宁波北仑做网站开发客户的70个渠道
  • 网站建设大客户沟通技巧线上渠道推广有哪些方式
  • 网站顶部导航文件代码在吗制作网站免费
  • 手机移动端网站做多大长尾关键词挖掘网站
  • 游戏开服表网站开发企业网络营销策划书范文
  • 虎门手机网站建设网站搜索引擎优化方案
  • 重庆建站公司哪个好网站seo快速排名优化的软件
  • 武汉做网站需要多少钱如何做自己的网站
  • 迅雷网站做爰视频自媒体平台app下载
  • 婚庆网站建设目的百度一下你就知道官网下载安装
  • 漳州网站建设选博大不错网络培训机构
  • 中卫网站设计西安关键词推广
  • 网站制作切片搜索引擎免费登录入口
  • 诚信通国际网站怎么做网络推广电话销售技巧和话术
  • 深圳住房和城乡建设委员会网站百度网址大全手机版
  • WordPress 4.7漏洞seo引擎优化是什么
  • 江苏网站定制企业网站是什么