【发布时间】:2015-07-26 18:08:39
【问题描述】:
我是一名 C# 程序员,我现在需要用 C++ 创建一个程序。我想要实现的是制作一个无限线程并给它一个睡眠时间。
在c#中我可以很容易地做到这一点
在主函数中
new Thread(taskfunction).Start();
和任务功能
private void taskfunction()
{
while(true){Thread.Sleep(2500); // do stuff}
}
所以只要我的程序打开,这将在后台运行。我正在尝试在 C++ 中实现相同的目标,例如:
在主函数中
std::thread somethread(taskfunction);
somethread.join();
和任务功能
void taskfunction()
{
while(true){this_thread::sleep_for(chrono::milliseconds(2500));// Do Stuff}
}
因此,当 c# 线程启动并继续运行时,c++ 线程等待 somethread.join();。有什么区别,我如何才能在 c# 中实现我在 c++ 中所做的事情?
谢谢
【问题讨论】:
-
实际上你必须在 C# 和 C++ 中加入或分离你的线程
-
join表示“等到线程完成”。那不是你想要的。您可以detach单独留下另一个线程,或者稍后将std::thread-object 放在join的某个位置。只是不要在没有joining 或detaching 的情况下破坏std::thread-object。
标签: c++ multithreading c++11 visual-c++