2011-06-16 59 views
0

我們有一個很好的類,它建立了一個套接字連接,然後重複地點擊它。 如果它發生超時,我們想拋出一個異常。帶有超時的多線程面向對象的套接字代碼

我想要的是每個對象的獨立超時。但是,正如其他文章所述,沒有可移植套接字超時代碼。

Socket Timeout in C++ Linux

目前我正在做一個信號,但是這是醜陋的,因爲有一個全局變量指向當前對象。這意味着這段代碼不能是多線程的。

是否有任何方式建立一個按線程方式的計時器,以便每個對象可以在自己的線程內運行?這似乎是最乾淨的方式。我可以建立一個隊列,讓他們都在關鍵部分等待,但這非常難看,並且會影響多線程性能(而且我不想)。

回答

1

您可以通過使用異步I/O來實現。例如,使用libeventasio。在相同的調度線程(I/O服務)上啓動一個讀操作和一個定時器。