36 windows_37_windows_Sync

windows_37_windows_Sync


  1. // windows_37_windows_Sync.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include <windows.h>
  5. CHAR *g_pszText = NULL;
  6. DWORD g_nTlsIndex = NULL; //全局索引号
  7. void print( )
  8. {
  9. printf( "%s\n", g_pszText );
  10. //从索引中把值取出来
  11. CHAR *pszText = (CHAR*)TlsGetValue( g_nTlsIndex );
  12. printf( "TLS: %s\n", pszText );
  13. }
  14. DWORD WINAPI PrintProc( LPVOID pParam )
  15. {
  16. CHAR *pszText = (CHAR*)pParam;
  17. g_pszText = (CHAR *)malloc( 100 );
  18. strcpy_s( g_pszText, strlen( pszText )+1, pszText );
  19. //将值保存到TLS索引当中
  20. TlsSetValue( g_nTlsIndex, g_pszText );
  21. while (true)
  22. {
  23. print( );
  24. Sleep( 1000 );
  25. }
  26. return 0;
  27. }
  28. //
  29. void Create( )
  30. {
  31. HANDLE hThread = NULL;
  32. DWORD nThreadID = 0;
  33. CHAR szText1[] = "ThreadProc-------";
  34. hThread = CreateThread( NULL, 0, PrintProc, szText1, 0, &nThreadID );
  35. //线程第二
  36. CHAR szText2[] = "ThreadProc2***********";
  37. hThread = CreateThread( NULL, 0, PrintProc, szText2, 0, &nThreadID );
  38. getchar( );
  39. WaitForSingleObject( hThread, INFINITE );
  40. CloseHandle( hThread );
  41. }
  42. int _tmain(int argc, _TCHAR* argv[])
  43. {
  44. //1、创建 TLS 索引
  45. //TlsAlloc
  46. g_nTlsIndex = TlsAlloc( );
  47. //创建线程
  48. Create( );
  49. //释放索引
  50. TlsFree( g_nTlsIndex );
  51. return 0;
  52. }





posted @ 2016-06-10 13:17  -刀狂剑痴-  阅读(159)  评论(0编辑  收藏  举报