免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
例子演示如何創(chuàng)建一個新線程,動態(tài)分配內(nèi)存
示例
CreateThread 函數(shù)從一個進(jìn)程里面創(chuàng)建一個線程。這個開始的線程必須指定開始執(zhí)行代碼的地址,新線程執(zhí)行。有代表性的,開始地址就是一個函數(shù)名。這個函數(shù)有一個參數(shù),并且返回一個 DWORD 值。一個進(jìn)程里面同時有多個線程在執(zhí)行。
下面這個例子演示如何創(chuàng)建一個新線程,執(zhí)行本地定義的函數(shù)。 ThreadProc. 建立的線程動態(tài)分配內(nèi)存傳遞信息到每個線程的實例中。線程函數(shù)負(fù)責(zé)釋放這些內(nèi)存。
被調(diào)用的線程用 WaitForMultipleObjects 持續(xù)等待,直到所有的工作線程退出。在線程退出后,關(guān)掉線程函數(shù)的句柄。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <windows.h>
#include <strsafe.h>//win2003SDK必須安裝 要不無此頭文件。此文件是為了實現(xiàn)StringCchPrintf,StringCchLength。
#define MAX_THREADS    3
#define BUF_SIZE    255
typedef struct _MyData{
int val1;
int val2;
}MYDATA,*PMYDATA;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
HANDLE hStdout;
PMYDATA pData;
TCHAR msgBuf[BUF_SIZE];
size_tcchStringSize;
DWORD dwChars;
hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
if(hStdout==INVALID_HANDLE_VALUE)
return 1;
//Cast the parameter to the correct data type.
pData=(PMYDATA)lpParam;
//Print the parameter values using thread-safe functions.
StringCchPrintf(msgBuf,BUF_SIZE,TEXT("Parameters=%d,%d\n"),
pData->val1,pData->val2);
StringCchLength(msgBuf,BUF_SIZE,&cchStringSize);
WriteConsole(hStdout,msgBuf,cchStringSize,&dwChars,NULL);
//Free the memory allocated by the caller for the thread
//data structure.
HeapFree(GetProcessHeap(),0,pData);
return 0;
}
void main()
{
PMYDATA pData;
DWORD dwThreadId[MAX_THREADS];
HANDLE hThread[MAX_THREADS];
int i;
//Create MAX_THREADS worker threads.
for(i = 0; i < MAX_THREADS; i++)
{
//Allocate memory for thread data.
pData=(PMYDATA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
sizeof(MYDATA));
if(pData==NULL)
ExitProcess(2);
//Generate unique data for each thread.
pData->val1=i;
pData->val2=i+100;
hThread[i]=CreateThread(
NULL,//default security attributes
0,//use default stack size
ThreadProc,//thread function
pData,//argument to thread function
0,//use default creation flags
&dwThreadId[i]);//returns the thread identifier
//Check there turn value for success.
if(hThread[i]==NULL)
{
ExitProcess(i);
}
}
//Wait until all threads have terminated.
WaitForMultipleObjects(MAX_THREADS,hThread,TRUE,INFINITE);
//Close all thread handle supon completion.
for(i=0;i<MAX_THREADS;i++)
{
CloseHandle(hThread[i]);
}
}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC windows api 多線程---互斥量、信號量、臨界值
Python線程池ThreadPoolExecutor 原理思考
AfxBeginThread
SuspendThread和ResumeThread函數(shù)
線程啟動與退出
C++多線程編程——線程的掛起、喚醒與終止
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服