【问题标题】:How can I do Multitasking in C or C++ [closed]如何在 C 或 C++ 中进行多任务处理 [关闭]
【发布时间】:2014-04-22 18:59:30
【问题描述】:

例如,以一个程序为例,该程序计算您键入段落所用的时间并显示您所用的时间(在末尾)。这里我们的程序同时执行两个任务: 1.等待用户输入(接受输入)。 2.落后的时钟计算经过的时间。

如何在执行期间(同时)完成这两项任务。 [ 好的 !您可能会考虑减去我们可能通过系统获得的最终和初始时间,但我希望多任务发生。]

我尝试了很多搜索标准库函数,但没有一个能做到。 我认为使多任务发生的唯一方法是程序的智能算法,它可以同时高效地执行许多任务。我错了吗?

【问题讨论】:

  • 您想要 C 答案还是 C++ 答案?正确的惯用答案非常不同。
  • 多任务处理相当容易:首先,确定您是在C 还是C++ 中编码。其次,选择C++。第三,阅读std::thread
  • @stefan:第四,阅读一整本(或几本)关于并发编程的书,了解同步、通信、不同线程技术等所有问题。
  • @FredLarson:第五 - 如果即使尽了最大的努力,你仍然不可避免地会遇到与并发相关的问题,那就开始吧。

标签: c++ c multitasking


【解决方案1】:

可能是多线程。使用pthreads

[尽管在您的示例中不需要它。只是

int time = getTime();
// run program
int endTime = getTime();
printf("%d\n", endTime - time);

]

【讨论】:

  • @const_ref;因为C中没有std::thread
  • @hacks 但在 c++ 中也有标记
  • @const_ref;我明白这就是我发表评论的原因。
  • @const_ref 当有人同时标记 C 和 C++ 时,我认为给出一个只适用于其中一个或另一个的答案是公平的游戏。
  • @crashmstr 那么为什么不评论给出一个独立工作的操作系统并且是标准的一部分。在 OP 帖子中“搜索标准库函数,但他们都没有这样做”..这当然不是真的
【解决方案2】:

在 C++11 中,您可以使用 std::thread,这当然是标准的一部分。

如果使用 C 然而或更旧的 c++ 编译器,这将不起作用。

另一种选择是boost::thread

【讨论】:

  • C11中有thrd_t
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多