小编raf*_*x07的帖子

c ++ 17内联+ thread_local vs thread_local

我想知道以下两个声明之间的区别是什么,如果两者都写在一个头文件中:

inline thread_local MyClass obj1;  // inline with thread_local
thread_local MyClass obj2;         // no inline
Run Code Online (Sandbox Code Playgroud)

如 C++17 中所述,向变量添加内联会强制所有翻译单元看到该变量的相同地址。这是否意味着可以obj2在不同的翻译单元中获得不同的地址值?在什么情况下要突出显示我们应该使用obj1而不是obj2

c++ inline thread-local-storage translation-unit c++17

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

使用std :: map insert可疑结果

我试着用:

std::map<std::wstring, std::pair<std::wstring, INT_PTR>> mm;
**mm.insert(_T("name"), std::make_pair(_T("value1"), static_cast<INT_PTR>(1));**
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

如果我用这个:

mm[_T("name")] = std::make_pair(_T("value1"), static_cast<INT_PTR>(1));
Run Code Online (Sandbox Code Playgroud)

有用.

错误是这样的:

No constructor could take the source type, or constructor overload resolution was ambiguous
Run Code Online (Sandbox Code Playgroud)

与此相同:

std::map<std::wstring, std::vector<std::pair<std::wstring, INT_PTR>>> mm;

std::vector <std::pair<std::wstring, INT_PTR>> vec;
vec.push_back(std::make_pair(_T("value1"), static_cast<INT_PTR>(1)));
mm.insert(_T("name"), vec);
Run Code Online (Sandbox Code Playgroud)

为什么它可以像这样使用"insert_or_assign"?

mm.insert_or_assign(_T("name"), vec);
Run Code Online (Sandbox Code Playgroud)

c++ stl stdmap

2
推荐指数
1
解决办法
62
查看次数

标准库中是否存在类型级别的左折叠元函数?

如果a,b,c,..表示 类型,则令 为我正在寻找地图的(a,b)类型, ,这样std::pair<a,b>F

    F : ((((a,b),c),d),...))) -> std::tuple<a,b,c,d...>
Run Code Online (Sandbox Code Playgroud)

它是否以标准库中的某个现有名称存在?如果没有,是否有另一个库可以做到这一点,或者这很容易实现,但我太笨了,不知道该怎么做?

c++ template-meta-programming c++17

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

如何在 C++11 中检查分离线程的状态?

我已经尝试寻找解决方案的多种方法,但到目前为止找不到合适的方法。

我正在使用分离线程,因为我不希望我的主线程等待/阻塞新的子线程,因为它还有许多其他重要的事情要做。

我创建一个线程如下:

std::thread rsync_t(&PreCompile::RunPreCompileThr, obj, arg1, arg2);
rsync_t.detach();
Run Code Online (Sandbox Code Playgroud)

现在,目标是定期检查这个分离的线程是否处于活动状态并正在运行。

我尝试了未来/承诺和异步方式来做到这一点,但它需要 .get(),它类似于 join(),这是我不想要的。

有什么建议可以做到这一点吗?

提前致谢。

c++ multithreading c++11

0
推荐指数
1
解决办法
484
查看次数