2016-06-09 167 views
-1

看到我知道線程之間有多種方法進行通信,但我的問題是針對LINX的。請回答。線程之間可以通過LINX通信進行通信嗎?

預先感謝

+1

https://www.google.com/search?q=LINX –

+0

我沒有谷歌,但無法找到確切的答案 – user2071089

+0

至少提及*哪個* LINX你的意思; TLA是U11E。我懷疑你指的是[這一個](http://linx.sourceforge.net/linxdoc/doc/)。如果是這樣,每個線程將需要他們自己的[端點](http://linx.sourceforge.net/linxdoc/doc/html/linx.7.html),因爲您不能在不同線程中同時使用相同的端點。 –

回答

0

線程同一進程共享堆人員,通過螺紋鎖,信號量和條件變量同步。

此外,Interprocess通訊方式(IPC例如:PIPE/FIFO/MessageQueue/SharedMemory/Signal/Socket)也適用於線程通訊。以FIFO爲例(忽略錯誤代碼檢查):

char buf[110]; 
char *FIFO = "/tmp/my_fifo"; 
mkfifo(FIFO, O_CREAT); 
int fd = open(FIFO, O_RDONLY, 0); 
int nread = read(fd, buf, 100); 
+0

我做了這件事。 線程1(){打開端點} //它保存在全局變量 線程2(){打開自己的端點 發送消息給端點1} //我我使用LINX_SEND系統調用 – user2071089

+0

得到錯誤沒有這樣的文件或目錄 @ user2071089「得到錯誤沒有這樣的文件或目錄」,你的意思是使用FIFO?這應該通過調用mkfifo來打開fifo文件,然後再打開它。 – lulyon

+0

@ user2071089隨時檢查更新的答案:) – lulyon

0

那麼根據@lulyon,這個方法也可以實現。對於LINX來說,特定的線程是可能的。 LINX_SEND(端點,信號,dest的SPID)。我不好意思,我發送的目標端點而不是SPID