c語言線程參數
㈠ c語言線程簡單例題
您好,這樣的:
通過pthread_join得到的終止狀態是不同的,總結如下:
1.如果thread線程通過return返回,rval_ptr所指向的單元里存放的是thread線程函數的返回值。
2. 如果thread線程被別的線程調用pthread_cancel異常終止掉,rval_ptr所指向的單元里存放的是常數PTHREAD_CANCELED。
3.如果thread線程是自己調用pthread_exit終止的,rval_ptr所指向的單元存放的是傳給pthread_exit的參數。
㈡ (C語言)為什麼我這樣調用線程里的結構體參數會報錯
沒有吧void*類型轉化成struct text*類型
㈢ c語言多線程問題
#include <stdio.h>
#include <process.h>
#include <windows.h>
long g_nNum; //全局資源
unsigned int __stdcall Fun(void *pPM); //線程函數
const int THREAD_NUM = 10; //子線程個數
int main()
{
g_nNum = 0;
HANDLE handle[THREAD_NUM];
int i = 0;
while (i < THREAD_NUM)
{
handle[i] = (HANDLE)_beginthreadex(NULL, 0, Fun, &i, 0, NULL);
i++;//等子線程接收到參數時主線程可能改變了這個i的值
}
//保證子線程已全部運行結束
WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);
return 0;
}
unsigned int __stdcall Fun(void *pPM)
{
//由於創建線程是要一定的開銷的,所以新線程並不能第一時間執行到這來
int nThreadNum = *(int *)pPM; //子線程獲取參數
Sleep(75);//some work should to do
g_nNum++; //處理全局資源
Sleep(1);//some work should to do
printf("線程編號為%d 全局資源值為%d\n", nThreadNum, g_nNum);
getch();
return 0;
}
㈣ (C語言)多線程beginthreadex的第四個參數(結構體)到底怎麼設置才能正確傳遞數值
第四個參數的類型是LPVOID(long型指針),可以進行任意類型的轉換,具體函數傳參可以參考http://blog.csdn.net/morewindows/article/details/7421759。
㈤ C語言創建線程問題(急)
你調用pthread_create之後就return掉了,然後程序結束了,在thread_fun執行之前就結束了,自然就沒列印那個出來
你可以在pthread_create之後卡個幾秒鍾(用sleep)或者用pthread_join還是啥的等線程結束再退出,就能看到thread_fun的輸出了
㈥ C語言多線程的概念
線程:線程是程序中的一個執行流,每個線程都有自己的專有寄存器(棧指針、程序計數器等),但代碼區是共享的,即不同的線程可以執行同樣的函數。
多線程:多線程是指程序中包含多個執行流,即在一個程序中可以同時運行多個不同的線程來執行不同的任務,也就是說允許單個程序創建多個並行執行的線程來完成各自的任務。
C語言的開始設計,並未設計多線程的機制,由於隨著軟硬體的發展及需求的發展。後來C語言才開發了線程庫以支持多線程的操作、應用。
主要基於Linux介紹C多線程。在編譯C的多線程時候,一方面必須指定Linux C語言線程庫多線程庫pthread,才可以正確編譯(例如:gcc test.c -o test -lpthread);另一方面要包含有關線程頭文件#include <pthread.h>。