[筆記]linux下和windows下的 創建線程函數


linux下和windows下的 創建線程函數

 1 #ifdef __GNUC__
 2 //Linux
 3 #include <pthread.h>
 4 #define CreateThreadEx(tid,threadFun,args) pthread_create(tid, 0, threadFun, args)
 5 #define CloseHandle(ph)
 6 /*
 7 int pthread_create(
 8   //指向線程標識符的指針。
 9   pthread_t *restrict tidp,
10   //設置線程屬性。傳入NULL表示使用默認。
11   const pthread_attr_t *restrict_attr,
12   //新線程所執行的線程函數地址。
13   void*(*start_rtn)(void*),
14   //傳給線程函數的參數。
15   void *restrict arg
16 );*/
17 #else
18 //windows
19 #include <process.h>
20 #define CreateThreadEx(tid,threadFun,args) _beginthreadex(tid, 0, threadFun, args, 0, NULL)
21 /*
22 HANDLE WINAPI _beginthreadex(
23   //線程內核對象的安全屬性,一般傳入NULL表示使用默認設置。
24   LPSECURITY_ATTRIBUTES lpThreadAttributes,
25   //線程棧空間大小。傳入0表示使用默認大小(1MB)。
26   SIZE_T dwStackSize,
27   //新線程所執行的線程函數地址,多個線程可以使用同一個函數地址。
28   LPTHREAD_START_ROUTINE lpStartAddress,
29   //傳給線程函數的參數。
30   LPVOID lpParameter,
31   //指定額外的標志來控制線程的創建,為0表示線程創建之后立即就可以進行調度,如果為CREATE_SUSPENDED則表示線程創建后暫停運行,這樣它就無法調度,直到調用ResumeThread()。
32   DWORD dwCreationFlags,
33   //返回線程的ID號,傳入NULL表示不需要返回該線程ID號。
34   LPDWORD lpThreadId
35 );*/
36 #endif

 

一般使用方式: CreateThreadEx(NULL,threadFun,arg);

但是 Linux下,第一個參數不能為空,不然直接段錯誤!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM