草庐IT

thread-abort

全部标签

c++ - std::thread 的创建使主程序速度减慢 50%

仅仅创建一个线程并加入它会使主线程的执行速度减慢50%。正如您在下面的示例中看到的那样,线程什么也不做,但仍然对性能有显着影响。我认为这可能是与功率/频率缩放相关的问题,所以我在创建线程后尝试休眠,但无济于事。下面的程序如果用编译g++-std=c++11-ooutthread_test.cpp-pthread显示结果Beforethread()trial0time:312024526ignore-1593025974Beforethread()trial1time:243018707ignore-494037597Beforethread()trial2time:242929293i

c++ - std::thread 的创建使主程序速度减慢 50%

仅仅创建一个线程并加入它会使主线程的执行速度减慢50%。正如您在下面的示例中看到的那样,线程什么也不做,但仍然对性能有显着影响。我认为这可能是与功率/频率缩放相关的问题,所以我在创建线程后尝试休眠,但无济于事。下面的程序如果用编译g++-std=c++11-ooutthread_test.cpp-pthread显示结果Beforethread()trial0time:312024526ignore-1593025974Beforethread()trial1time:243018707ignore-494037597Beforethread()trial2time:242929293i

c++ - abort() 在 VS2010 中不是 __declspec(noreturn)

在我的VS2010拷贝中,stdlib.h包含(第353-355行)_CRTIMP__declspec(noreturn)void__cdeclexit(_In_int_Code);_CRTIMP__declspec(noreturn)void__cdecl_exit(_In_int_Code);_CRTIMPvoid__cdeclabort(void);我觉得奇怪的是abort()上没有noreturn注释。有谁知道这是什么原因?是bug吗?编辑:在VS2008中,它是相同的,但stdlib.h的第371-373行缺少noreturn注释正在触发errorC4716.进一步引用:C+

c++ - abort() 在 VS2010 中不是 __declspec(noreturn)

在我的VS2010拷贝中,stdlib.h包含(第353-355行)_CRTIMP__declspec(noreturn)void__cdeclexit(_In_int_Code);_CRTIMP__declspec(noreturn)void__cdecl_exit(_In_int_Code);_CRTIMPvoid__cdeclabort(void);我觉得奇怪的是abort()上没有noreturn注释。有谁知道这是什么原因?是bug吗?编辑:在VS2008中,它是相同的,但stdlib.h的第371-373行缺少noreturn注释正在触发errorC4716.进一步引用:C+

c++ - 在 clang++ 中使用 boost/thread header 时遇到问题 (Windows)

我正在尝试使用clang++在Windows上使用Boost.Thread。在包含boost/thread.hpp时,我收到以下编译错误:使用-DBOOST_USE_WINDOWS_H:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread.hpp:13:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread/thread.hpp:12:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread/thread_only

c++ - 在 clang++ 中使用 boost/thread header 时遇到问题 (Windows)

我正在尝试使用clang++在Windows上使用Boost.Thread。在包含boost/thread.hpp时,我收到以下编译错误:使用-DBOOST_USE_WINDOWS_H:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread.hpp:13:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread/thread.hpp:12:InfileincludedfromD:/env/boost/boost_1_58_0\boost/thread/thread_only

c++ - 需要一些关于如何制作类(class)的反馈 "thread-safe"

我目前正在学习如何在C++中进行多线程处理。我的一个学习项目是俄罗斯方block游戏。在这个项目中,我有一个包含所有游戏状态数据的Game类。它有移动方block的方法和其他一些东西。用户将访问此对象(用户将使用箭头键从主线程移动block),同时线程计时器正在对事件block执行重力(定期降低它)。起初我认为我可以通过添加互斥成员变量并将其锁定在每个方法调用中来使Game类线程安全。但问题在于它只保护单个方法调用,而不是涉及多个方法调用的更改。例如://Thisisnotthread-safe.while(!game.isGameOver()){game.dropCurrentBlo

c++ - 需要一些关于如何制作类(class)的反馈 "thread-safe"

我目前正在学习如何在C++中进行多线程处理。我的一个学习项目是俄罗斯方block游戏。在这个项目中,我有一个包含所有游戏状态数据的Game类。它有移动方block的方法和其他一些东西。用户将访问此对象(用户将使用箭头键从主线程移动block),同时线程计时器正在对事件block执行重力(定期降低它)。起初我认为我可以通过添加互斥成员变量并将其锁定在每个方法调用中来使Game类线程安全。但问题在于它只保护单个方法调用,而不是涉及多个方法调用的更改。例如://Thisisnotthread-safe.while(!game.isGameOver()){game.dropCurrentBlo

C++ 多线程 : is initialization of a local static lambda thread safe?

这个问题在这里已经有了答案:GCC'sTSANreportsadataracewithathreadsafestaticlocal(1个回答)关闭5年前。C++11标准说明局部静态变量初始化应该是线程安全的(http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables)。我的问题是当lambda被初始化为静态局部变量时究竟会发生什么?让我们考虑以下代码:#include#includeintdoSomeWork(intinput){staticautocomputeSum=[](int

C++ 多线程 : is initialization of a local static lambda thread safe?

这个问题在这里已经有了答案:GCC'sTSANreportsadataracewithathreadsafestaticlocal(1个回答)关闭5年前。C++11标准说明局部静态变量初始化应该是线程安全的(http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables)。我的问题是当lambda被初始化为静态局部变量时究竟会发生什么?让我们考虑以下代码:#include#includeintdoSomeWork(intinput){staticautocomputeSum=[](int