相关疑难解决方法(0)


C++:std :: thread的简单返回值?

使用win32线程,我有直接向前GetExitCodeThread()提供线程函数返回的值.我正在寻找类似的东西std::thread(或提升线程)
据我所知,这可以通过期货完成,但究竟如何呢?

c++ multithreading

35
推荐指数
3
解决办法
6万
查看次数

C#Task.Run()与C++ std :: async()

我在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# c++ concurrency

8
推荐指数
2
解决办法
2069
查看次数

延迟后执行 C++ 函数而不使用 sleep

在 C++ 中,有没有一种简单的方法可以在特定延迟后发生某些事情?在Python中,我只使用frame.after(ms,myFunction),这很好又简单——这在C++中似乎是一个更棘手的问题!之前有人建议我使用 Sleep(),不幸的是,这不起作用,因为我正在为《半条命 2》编写 mod,如果我使用 Sleep,那么整个游戏会挂起 X 秒,而不是在 X 之后调用事件秒。那么有没有另一种方法可以在特定延迟后调用函数而不使用睡眠呢?

c++ delay delayed-execution

6
推荐指数
1
解决办法
1万
查看次数