代碼很簡單,如下;
- #include <unistd.h>
- #include <pthread.h>
- #include <iostream>
- #include <string>
- using namespace std;
- void* pfn(void* pParam)
- {
- const char* psz = (char*)pParam;
- cout << psz << endl;
- pthread_exit(0);
- }
- void* create(const char* psz)
- {
- pthread_t tid = 0;
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_create(&tid, &attr, pfn, (void*)psz);
- }
- int main(int argc, char* argv[])
- {
- const char* psz = "Hello, thread!";
- create(psz);
- sleep(1000);
- return 0;
- }
編譯時居然不用-lpthread選項能通過,平臺是SUSE10.0企業版。
運行時死活到pthread_create時出現段錯誤,原因是函數的地址爲零。
化了好長時間,下載了OpenSUSE10.3裝了起來,終於沒有問題了,當然鏈接時要指定-lpthread