一、執行緒為什麼gcc編譯通過, g++編譯失敗?
例項如下:
#include
#include
#include
void thread(void)
int main(void)
for(i=0;i<3;i++)
printf(
"this is the main process.\n");
pthread_join(id,
null);
return (0);}
//gcc編譯通過
this is the main process.
this is the main process.
this is the main process.
this is a pthread.
this is a pthread.
this is a pthread.
//g++編譯失敗如下
example.c: in function 『int main()』:
example.c:13: error: invalid conversion from 『void*』 to 『void* (*)(void*)』
example.c:13: error: initializing argument 3 of 『int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)』
要使g++編譯通過,方法如下:
c++禁止將void指標隨意賦值給其他指標。
因此你在把void thread(void)函式的入口轉換為void*,然後當作引數呼叫pthread_create時就出現錯誤,因為pthread_create的引數裡應該是指向形如void* fun(void*)函式的乙個指標。
可以修改void thread(void)為void* thread(void*),然後去掉呼叫時的(void*)強制轉換,錯誤消除。
二、c語言getchar問題
getchar()輸入字元是,需要對回車鍵進行儲存,否則將會在下次一呼叫getchar()時儲存!
int main(void)
return 0;
}
併發程式設計注意的問題
本文學習自博主凌瀾星空 併發是為了提高程式的執行速度,並不是執行緒越多越好,併發過程要注意三個問題 1.上下文切換 2.死鎖 3.資源限制 1.執行緒的執行機制 乙個cpu每一時刻只能執行一條主線程 作業系統會給每條執行緒分配不同長度的時間片 作業系統會隨機從就緒等待狀態的執行緒中隨機選取一條執行 ...
並行程式設計中應注意的問題
隨著多核技術的發展和個人超級計算機的引入,如何更好的利用多核 多結點是乙個亟需解決的問題。多核技術是在每個cpu晶元上整合多個計算核,它和 p 對稱多處理器 最大的區別就在於多核cpu有更大的l2 cache,並且多個計算核共用片上的快取 有的共用l2 cache,有的共用l3 cache 這就是說...
socket程式設計需要注意的問題
1.connect tcp sock stream 是連線到服務端,udp sock dgram 是把本地位址埠和服務端的對應起來,並沒有建立連線 connect前也可以用bind 繫結本地位址埠到clientfd,bind的引數是本地位址埠 不使用bind則會自動繫結個 2.如果是udp,則可以不...