簡體   English   中英

boost :: asio :: deadline_timer是否為每個計時器使用一個線程?

[英]Does boost::asio::deadline_timer use a thread for each timer?

我有一個項目列表,我需要在不同的時間間隔更新。 該列表可以長達數千個項目。 每個項目可能具有不同的間隔。 如果我為每個項目創建一個計時器,我是否會使用線程使系統飽和? 我認為最好創建一個等於項目集中最小間隔的計時器,然后在每次更新時增加一個計數器,然后檢查計數器現在是否等於任何其他間隔。 如果最小間隔是所有其他間隔的倍數,則應該起作用。 有什么建議?

Boost不使用每個計時器的一個線程,它保留一個計時器隊列。 每個計時器都是使用boost::asio::io_service對象創建的,它可以完成實際工作。

當你從多個線程顯式運行boost::asio::io_service::run() ,這個對象可以在一個或多個線程中調度它的工作,但是定時器和線程之間沒有一對一的對應關系,而且Asio會不要在背后創建線程。

最新版本的Asio,Boost 1.43及更高版本,在Linux上使用timerfd_create(2) API for deadline_timer

更改為使用timerfd在Linux上調度計時器(如果可用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM