Linux程式設計注意問題

2021-06-05 00:43:24 字數 1150 閱讀 3582

一、執行緒為什麼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,則可以不...