而且我必須在一個函數中創建一個線程,也就是(線程)在一個無限循環中等待連接並接受來自另一個進程的消息(因此,該線程將作爲一個tcp服務器工作),並且每當消息到來時,它都必須使用?或那種來電或不管它作爲一個參數傳遞的功能,線程創建的功能。如何在一個用作tcp服務器的線程中使用帶函數參數的函數
所以這是函數頭
int init(void (*notif)(const char *, const char *),
void (*parameter1)(const char *),
void (*parameter2)(const char *));
所以,我已經看到了這個帖子How do you pass a function as a parameter in C?它有助於獲得這個想法,但我完全不確定如何在線程內部完成。
及其產生的原因是因爲我沒有什麼可以與內螺紋服務器沒有經驗,我發現這個代碼,這是非常有幫助的https://gist.github.com/silv3rm00n/5821760
但它的工作方式,所有的代碼是在函數(所以在線程之外),並且線程作爲用於連接的套接字的唯一參數。我已經看到過幾次類似這樣的用法。
然後我懷疑:將服務器的所有代碼放入線程中是否合理?或者這樣做沒什麼意義,線程會太「沉重」,最好在這種情況下進行。
如果問題措辭不當或我沒有正確解釋自己,我很抱歉,對於這類問題,我幾乎沒有線程經驗和0經驗。
編輯: 這一切都是那麼遠,但我想的東西我有,這是行不通的:
void (*funcionParametroThread)(const char *, const char *);
funcionParametroThread=(*notif_evento)(const char *, const char *);
pthread_create(&thid, &atrib_th, tcp_server, funcionParametroThread);
我試圖使它類似下面的代碼是一個答案從鏈接上述
問題int dosomethingwithchar(char a) { return 1; }
functiontype2 func2 = &dosomethingwithchar
int result = func2('a');
我閱讀和重新閱讀這一點,因爲有些東西是有點複雜,但我想我慢慢變了,所以即使在完成之前,我想說謝謝!我已經在上面了。 – keont
如果您有任何問題可以免費給我寫信([email protected]),但不要以我的耐心解答! :p –
一個例子:製作一個明喻,而不是數字5,它可以是一個數字,就像一個接受者在連接到達時給出的數字,並且在我要接收和發送的線程內(根據需要),然後調用funcion用你寫的語法, k-> fn(a,「是啊!\ n「); – keont