如下还要定义什么东西?还有填进去的东西到底是什么意思?

CreateThread()里的六个参数里的第3个和第四个参数(LPTHREAD_START_ROUTINE lpStartAddress和 LPVOID lpParameter)要怎么填?

慕哥6287543
浏览 183回答 3
3回答

12345678_0001

一、Windows API函数。该函数在主线程的基础上创建一个新线程。微软在Windows API中提供了建立新的线程的函数CreateThread。二、CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤:1.在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回2.把线程退出码置为STILL_ACTIVE,把线程挂起计数置13.分配context结构4.分配两页的物理存储以准备栈,保护页设置为PAGE_READWRITE,第2页设为PAGE_GUARD5.lpStartAddr和lpvThread值被放在栈顶,使它们成为传送给StartOfThread的参数6.把context结构的栈指针指向栈顶(第5步)指令指针指向startOfThread函数三、MSDN中CreateThread原型:HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,//SDSIZE_T dwStackSize,//initialstacksizeLPTHREAD_START_ROUTINE lpStartAddress,//threadfunctionLPVOID lpParameter,//threadargumentDWORD dwCreationFlags,//creationoptionLPDWORD lpThreadId//threadidentifier)processthreadsapi.h中CreateThread原型:WINBASEAPI_Ret_maybenull_HANDLEWINAPICreateThread(_In_opt_LPSECURITY_ATTRIBUTES lpThreadAttributes,_In_SIZE_T dwStackSize,_In_LPTHREAD_START_ROUTINE lpStartAddress,_In_opt___drv_aliasesMemLPVOID lpParameter,_In_DWORD dwCreationFlags,_Out_opt_LPDWORD lpThreadId);四、示例:

红糖糍粑

关于六个参数:第一个是所创线程的安全属性,多设置为NULL; 第二个是所创线程堆栈的大小,多设为0; 第三个是你创建的线程的地址;(此处应为你的线程函数的函数名) 第四个是传递给你的线程函数的参数; 第五个是表示你创建的线程是否立即执行,设为0则立即执行; 第六个则是你创建线程的ID号,设为NULL就行。关于线程你要知道他有一个对应的线程函数,你创建线程后即执行你的函数(若你指定第五个参数为0立即执行,所执行的函数即为第三个参数)对于二楼他设置了一个等待,若无此等待可能会导致创建线程的函数已经退出,而你的线程却还在运行。

RISEBY

(1)LPTHREAD_START_ROUTINE lpStartAddress 指定了线程函数的起始地址,新建线程将从此地址开始执行,直到return语句返回,把控制权交给操作系统。(2)LPVOID lpParameter 则是传递给线程函数的参数,也即传递给(1)中指定的线程函数的地址。以下是一个例子:创建线程后,将转到线程函数执行,遇到return语句后返回到main函数。#include <iostream>#include <windows.h>using namespace std;/*ThreadProc为LPTHREAD_START_ROUTINE lpStartAddress*参数指定的线程函数.lpParam则是LPVOID lpParameter指*定的传递给线程函数的参数*/DWORD WINAPI ThreadProc(LPVOID lpParam){for (int i = 0;i < 20;++i){cout << "I am from a thread,count = " << i <<endl;}return 0;}int main(){HANDLE hThread;DWORD dwThreadID;hThread = ::CreateThread(NULL,NULL,ThreadProc, // 线程入口地址NULL,0,&dwThreadID);::WaitForSingleObject(hThread,INFINITE);::CloseHandle(hThread);return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP