-1

我对多线程编程一无所知,所以想在这里发布一个一般性问题。我该如何执行以下操作:

main() 每 30 秒运行一次 MyMethod

MyMethod() 1. 获取数据 2. 进行计算 3. 将结果保存到文件中

如何确保在 main 再次开始运行 MyMethod 之前完成保存结果(MyMethod 步骤 3)?基本上我必须以某种方式锁定该线程,直到 MyMethod 完成。随意使用任何语言作为示例,我对如何在现实中完成这些事情的概念更感兴趣。

谢谢

4

1 回答 1

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();  
}
于 2013-04-03T23:54:22.857 回答