gpt4 book ai didi

multithreading - 如何通过模板传递类型信息以实例化 D 中的对象

转载 作者:行者123 更新时间:2023-12-04 04:30:46 25 4
gpt4 key购买 nike

如何将类型信息传递给线程,以便使用传递的信息在线程中创建正确类型的对象?像这样的东西:

struct Test // or class Test
{
int x, y, z;
}

void testInThread(F, T ...)(T args)
{
auto obj = F(args);
// Do stuf with obj in the new thread
}

auto tid = std.concurrency.spawn!(testInThread, Test, 1, 2, 3);

// Threads and stuff...

这不能编译,但我确信这样的事情应该是可能的。我认为我对模板参数有一些不了解。

最佳答案

这里的这一行将编译:

    auto tid = std.concurrency.spawn(&testInThread!(Test, int, int, int), 1, 2, 3);

我不确定你是否可以通过隐式扣除这些整数来使它更漂亮。但是编译的原因是 spawn期待一个功能。 testInThread是一个生成函数的模板。如果你将编译时参数列表传递给它而没有运行时列表,你可以获得函数的地址......这对于 spawn 来说已经足够了.

关于multithreading - 如何通过模板传递类型信息以实例化 D 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com