2013-04-03 74 views
-1

我不知道关于多线程编程的任何内容,所以想在这里发布一个普遍的问题。我怎样才能做到以下几点:线程和锁

的main() 运行的MyMethod每隔30秒

的MyMethod() 1.获取数据 2.不计算 3.保存结果到文件

哪有在主开始再次运行MyMethod之前,我确保完成了保存结果(MyMethod步骤3)?基本上我必须锁定该线程,直到MyMethod完成。随意使用任何语言作为例子,我更关心这些事情在现实中是如何完成的。

谢谢

+0

除了启动线程一次,main()还要做什么吗?线程不仅可以标记开始时间,执行123,标记结束时间,计算intervalMs =结束开始,如果(30000-intervalMs)不是负数,睡眠(30000-intervalMs),循环返回?自主操作,不锁定,不同步,启动线程后不需要主线程动作,启动多线程的机会为零。 – 2013-04-04 09:43:43

回答

0

你不需要同步。您只需确保线程工作已完成,因为保存在最后发生。

#include <thread> 
#include <unistd.h> 


int MyMethod(){ 
    // some code 
} 

int run(){ 
    std::thread thrd(MyMethod); 
    sleep(30); 
    thrd.join(); 
} 

int main(){ 
    while(true) 
     run(); 
} 
+0

非常感谢,它真的帮助了我。 – ilyaw77 2013-04-06 02:29:15

+0

请注意,这段代码实际上与主线程自行完成工作相同。 – didierc 2013-04-06 07:50:05