【问题标题】:Using pthread to create a clock使用 pthread 创建时钟
【发布时间】:2017-01-02 01:05:36
【问题描述】:

我想创建一个保持循环的新线程。像这样的:

void Clock() {
    double Time = 0;
    while (1) {
        usleep(1000);
        Time = (Time+0.1);
    }
    return;
}

然后我希望我的其他现有线程能够访问最新的时钟值并使用它。如何声明“时间”变量以便所有线程都可以访问它,以及如何更改上面的代码以适应它?还有我需要做什么才能访问它?

【问题讨论】:

  • 将其设为全局变量?
  • @JoachimPileborg 我有许多不同的源文件,我可以在头文件中声明一个全局变量以确保它能够在我的所有源文件中使用吗?还是有不同的解决方案
  • 你意识到时间会流逝吗?
  • 只需使用 POSIX 计时器。
  • @EOF:太好了。只要以某种方式阻止了比赛条件。是的,这不是一个应该重新发明的轮子。

标签: c multithreading pthreads


【解决方案1】:

如果你只想获取当前时间,你可以不使用线程。以Get the current time in C 为例。

如果您使用线程,请注意线程独立运行。看看Mutex lock threads 一个简单的例子。您需要使用pthread_create 创建线程,并使用pthread_mutex 保护Time 变量。

我建议你先从那个开始,然后把原子留到下一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多