任何人都可以高度直觉地知道何时使用它们?
参考文献:
使用win32线程,我有直接向前GetExitCodeThread()
提供线程函数返回的值.我正在寻找类似的东西std::thread
(或提升线程)
据我所知,这可以通过期货完成,但究竟如何呢?
我在Mac 2上运行类似的代码示例,一个用C++编写,另一个用C#编写.2个并行执行的简单任务(或者至少我希望它们),一个在循环中打印'+',另一个在循环中打印' - '.我期待2个样本的输出非常相似,但是我觉得它们有点不同.
C++似乎真正并行运行任务.我可以看到+ - 在每次运行时都很好地交替,但C#似乎运行一个任务一段时间,然后切换到另一个任务并运行一段时间.像这样的东西:
C++: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
C# : ++++++++++---------++++++------
Run Code Online (Sandbox Code Playgroud)
我理解无法对并行线程的运行方式做出假设,我很好奇C++能够始终如一地产生如此好的结果.
谢谢你的时间!
C#:
using System;
using System.Threading.Tasks;
public class ConcurrentTasks
{
public static void Main(String[] args)
{
var task1 = Task.Run(()=>DemoTask("+"));
var task2 = Task.Run(()=>DemoTask("-"));
var res1 = task1.Result;
var res2 = task2.Result;
Console.WriteLine("\nResults:");
Console.WriteLine(res1);
Console.WriteLine(res2);
}
private static String DemoTask(String label)
{
for (int i = 0; i < 1000; i++)
{
Console.Write(label);
}
return label + " result";
}
}
// mcs ConcurrentTasks.cs
// mono ConcurrentTasks.exe …
Run Code Online (Sandbox Code Playgroud) 在 C++ 中,有没有一种简单的方法可以在特定延迟后发生某些事情?在Python中,我只使用frame.after(ms,myFunction),这很好又简单——这在C++中似乎是一个更棘手的问题!之前有人建议我使用 Sleep(),不幸的是,这不起作用,因为我正在为《半条命 2》编写 mod,如果我使用 Sleep,那么整个游戏会挂起 X 秒,而不是在 X 之后调用事件秒。那么有没有另一种方法可以在特定延迟后调用函数而不使用睡眠呢?