windows_35_Thread_Tls 线程局部存储
// windows_35_Thread_Tls.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <string.h>
int g_AddVar = 0;
CHAR *g_pszText1 = NULL;
__declspec(thread)CHAR *g_pszText2 = NULL;
void print( )
{
//printf( "Text1:%s\n", g_pszText1 );
printf( "Text2:%s\n", g_pszText2 );
}
DWORD WINAPI PrintProc( LPVOID pParam )
{
CHAR *pszText = (CHAR*)pParam;
g_pszText1 = (CHAR *)malloc( 100 );
memset( g_pszText1, 0, 100 );
strcpy_s( g_pszText1, strlen(pszText)+1, pszText );
g_pszText2 = (CHAR *)malloc( 100 );
memset( g_pszText2, 0, 100 );
//strcpy_s( g_pszText2, strlen( pszText ) + 1, pszText );
sprintf_s( g_pszText2, 100, "%s,%d", pszText, ++g_AddVar );
while (true)
{
print( );
Sleep( 1000 );
}
}
void Create( )
{
//1、定义线程处理函数
//ThreadProc
//2、创建线程
//CreateThread
DWORD dwThread = 0;
CHAR szText1[] = "Thread 1------------";
HANDLE hThread = CreateThread( NULL, 0, PrintProc, szText1, 0, &dwThread );
//线程2
CHAR szText2[] = "Thread 2*************";
hThread = CreateThread( NULL, 0, PrintProc, szText2, 0, &dwThread );
//线程3
CHAR szText3[] = "Thread 3xxxxxxxxxxxxxxxx";
hThread = CreateThread( NULL, 0, PrintProc, szText3, 0, &dwThread );
//3、使用线程
//4、结束线程
//ExitThread
//TerminateThread
//5、线程挂起和执行
//挂起线程、SuspendThread
//执行线程、ResumeThread
//6、等候线程的结束
//WaitForSingleObject
//7、关闭线程句柄
//CloseHandle
getchar( );
}
int _tmain(int argc, _TCHAR* argv[])
{
Create( );
return 0;
}
时间: 2024-10-02 09:03:14