我最近开始在C ++中使用多线程。目前我在这里有一个例子的三个线程..
以下for循环将启动三个独立于彼此的线程,这三个线程将在三个线程中相互独立地调用Scanner
类。
uint64_t num_scanners = 3; // number of threads
for (uint32_t i = 0; i < num_scanners; i++) {
m_scanners.push_back(boost::shared_ptr<Scanner>(new Scanner(i, num_scanners)));
}
在此之后,我试图让下面的事情发挥作用,但不知怎的,我无法让它发挥作用 -
如果Thread1
正在使用1386621020 second
,那么Thread2
应该适用于1386621021 second
,然后Thread3
应该适用于1386621022 second
。
此后Thread1
将在1386621023 second
上工作(这意味着它在第一次执行第一次任务后将睡眠2秒钟,因为第一次Thread1正在处理1386621020
)和{ {1}}将在Thread2
上工作,1386621024 second
将在Thread3
上工作,并继续这样做。
下面是我的Scanner类,它在每个线程中运行并调用1386621025 second
方法。我需要每隔一秒钟调用DoScan
方法,如上所述。
DoScan
我不是在寻找完全准确的线程睡眠算法。这里的近似睡眠时间算法应该没问题......