導航:首頁 > 網路營銷 > semtimedwait替代

semtimedwait替代

發布時間:2020-08-25 02:19:00

1、Linux系統下的C++編程與Windos下的C++編程有什麼區別?請講的具體些,謝謝!

具體些...編程的區別,先不說編程工具,先說最重要的編譯器的問題吧..這個是決定性因素

首先,要說下編譯器的事..Linux下面用的是g++,而win下面基本都是VS或者VC++的編譯器.兩種編譯器肯定都認得標準的C++,但是呢,某些細微的語法細節,兩者可能稍微不同,比如對變參的定義,還一個例子就是VC裡面支持for語句里申請一個變數,這個變數後面可以引用,但是g++就需要加上特定的編譯參數才可以編譯通過。當然了g++也有些功能是VC不支持的.

然後,前面已經提到了,標准語法都是支持的。如果需要寫一個linux和win都通用的C++程序,可能語法需要盡量標准了..

再然後,API的問題.C++標准庫和C標准庫的函數 ,兩者都肯定是支持的。但是系統相關的那部分API可能就需要注意了....比如win下面有waitforsingleobject,Linux下就沒這個,它用的是sem_timedwait或者sem_wait等.寫通用程序 也必須考慮這些系統API的問題.

再說工具.win下面的IDE有VC,VS,C++ builder等.自帶了編輯器...Linux下一般是編輯器和編譯分開的,先用vim或者emacs寫好程序,然後用g++編譯,文件多了就會藉助make工具。當然Linux下也有一些IDE,比如codeblocks,anjuta等等開源的IDE,而且這些開源IDE也有win版本。我win下和linux下用的都是開源IDE。

PS:樓上說的共享內存的事情,可以用虛擬內存,就是文件映射的方式來實現,win下面是mapofview,Linux下是mmap。

2、怎樣避免timedwait 條件變數喚醒丟失問題

互斥鎖一個明顯的缺點是他只有兩種狀態:鎖定和非鎖定。而條件變數通過允許線程阻塞和等待另一個線程發送信號的方法彌補了互斥鎖的不足,他常和互斥鎖一起使用。使用時,條件變數被用來阻塞一個線程,當條件不滿足時

3、WaitForSingleObject怎麼使用,想用它在windows環境下實現類似linux下的sem_wait功能。

#

4、linux下,用gcc編譯c代碼,error:undefined reference to sem_wait 怎麼解決?謝謝! 請問 在哪兒找到的

#include <semaphore.h>

int sem_wait(sem_t *sem);

int sem_trywait(sem_t *sem);

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

Link with -lrt or -pthread.

自己看最後一句....手冊裡面寫著呢....link with -lrt or -pthread

5、linux信號量的問題

sem_init:初始化信號量sem_t,初始化的時候可以指定信號量的初始值,以及是否可以在多進程間共享。
sem_wait:一直阻塞等待直到信號量>0。
sem_timedwait:阻塞等待若干時間直到信號量>0。
sem_post:使信號量加1。
sem_destroy:釋放信號量。和sem_init對應。 答案補充 關於各函數的具體參數請用man查看,如man sem_init可查看該函數的幫助

6、萬能的論壇,Linux系統一次等待多個信號量怎麼解決

sem_init:初始化信號量sem_t初始化候指定信號量初始值及否進程間共享
sem_wait:直阻塞等待直信號量>0
sem_timedwait:阻塞等待若干間直信號量>0
sem_post:使信號量加1
sem_destroy:釋放信號量sem_init應 答案補充 關於各函數具體參數請用man查看,man sem_init查看該函數幫助

與semtimedwait替代相關的知識