boost-thread相关内容
以下是否安全? 我是线程的新手,我想将一个耗时的进程委托给我的C ++程序中的一个单独的线程。 使用boost库我编写了这样的代码: thrd = new boost :: thread(boost :: bind(& myclass :: mymethod ,this,& finished_flag); 其中finished_flag是我的类的布尔成员当线程完成时,它设置我的
..
我目前正在为boost线程工作一个小的包装类,但我真的不知道睡眠功能如何工作,这是我到目前为止: BaseThread :: BaseThread(){ thread = boost :: thread(); bIsActive = true; } BaseThread ::〜BaseThread(){ join(); } void BaseThread ::
..
你可以像一个pthread一样取消Boost线程吗? 我写一个简单的看门狗来终止工作线程,如果它们崩溃了,是一种简单地取消Boost Thread库中的线程的方法。 解决方案 它们不支持cancel,好的东西,因为它可以导致各种各样的细微问题。 看看文档的部分,涵盖线程中断和boost :: thread_interrupted异常和时尚的东西允许你完成你想要的,同时也清理的东
..
我想了解不同的用例。和两个线程使用的区别。 这是我读过的一个伟大的教程,解释 boost :: thread_group 。 这里是我使用的代码: boost :: threadpool :: pool s_ThreadPool(GetCoreCount()); CFilterTask任务(pFilter,//过滤器运行 boost :: bind(& CFilterMa
..
我目前使用Valgrind的“Callgrind”来分析性能问题的应用程序。在查看分析数据时,看起来在 boost :: detail :: get_tss_data 中花费了25%的处理时间主要目的是物理模拟和可视化的应用程序。 get_tss_data thread_specific_ptr :: get 通常是否暗示其他特定的内容? 编辑: 我的平台:Linux-2.
..
我有一个关于线程管理的问题。 我的问题是,我想创建一个类ThreadManager必须管理所有创建的线程,当然也销毁此线程。 class DerivedInterface { public: DerivedInterface():id (“测试”){}; virtual〜DerivedInterface(){}; virtual void run()= 0; vi
..
我编写了一个boost :: thread应用程序,其中我可能有一些竞争条件。我想调试这个程序。因此,我使用了以下valgrind工具: halgrind drd 不幸的是,他们有一个非常假的阳性率。所以使用真正简单的程序下面 valgrind --tool = drd 抱怨大约94错误,其中no应该是。所以与我的复杂程序,我得到大约15000错误。所以这真的很难找到实际的错误。
..
我有以下代码: #include static boost :: thread_specific_ptr _tssThreadNameSptr; 我收到以下错误 g ++ -c -I $ BOOST_PATH tssNaming.h
..
是否可以对boost :: asio中的条件变量执行异步等待(读取:非阻塞)?如果它不是直接支持任何提示实现它将不胜感激。 我可以实现一个定时器和唤醒,甚至每几个毫秒,但这是方法是非常差,我发现很难相信条件变量同步没有实现/记录。 解决方案 如果我正确理解了意图,那么当一个条件变量被发出时, asio线程池?我认为在处理程序的开头等待条件变量就足够了, io_service :: p
..
编译器:linux上的clang ++ x86-64。 自从我编写了任何复杂的低级系统代码和我对系统的ussualy程序原语(windows和pthreads / posix)。所以,在#和外的已经从我的记忆。我现在使用 boost :: asio 和 boost :: thread 。 为了针对异步函数执行器模拟同步RPC( boost :: io_service $ c> io :
..
在图形应用程序中,我使用控制台输入执行调试命令。当创建控制台时,还创建一个新线程来收集处理所有输入的用户命令,图形应用程序继续并行运行。我使用boost ::线程库。 到目前为止工作良好,但我没有找到一个好的解决方案停止执行这个线程。线程总是等待用户输入: while(appRunning) { std :: theUserCommand; // ... do stuff
..
根据 http://www.boost.org /doc/libs/1_55_0/doc/html/boost_asio/overview/cpp2011/futures.html ,我们可以使用boost :: asio与 std :: future 。但我找不到任何有关使用 boost :: unique_future 的任何信息,它有更多的功能,如 then()。如何使用? 解决方案
..
有一种广为人知的锁定多个锁的方法,其依赖于根据该顺序选择固定的线性顺序和锁定锁。 ,在“获取两个互斥锁上的锁定并避免死锁”的答案中。特别是,基于地址比较的解决方案似乎相当优雅明显。 当我试图检查它是如何实际实现,我发现这个解决方案没有被广泛使用。 引用
..
使线程安全的简单方法是添加一个mutex属性,并在访问器方法中锁定互斥体。 cMyClass { boost :: mutex myMutex; cSomeClass A; public: cSomeClass getA(){ boost :: mutex :: scoped_lock lock(myMutex); return A; } }; 问题
..
我有一个关于使用 boost :: lock_guard (或类似的范围锁)和使用应该由锁保护的变量在 return 语句。 如何破坏本地对象和复制返回值?如何对返回值进行优化? 示例: Class :: GetData() { boost :: lock_guard lock(this-> mMutex); return this->
..
我使用一个8核处理器,我使用Boost线程来运行一个大程序。 逻辑上,程序可以分成组,每个组由一个线程运行。 在每个组内,一些类总共调用“new”运算符10000次。 Rational Quantify显示,当程序运行时,“新”内存分配占用了最大处理时间,并且减慢了整个程序的运行速度。 方式我可以加快系统可以使用每个'组'内的线程,以便10000内存分配可以并行发生。 我不清楚如
..
是否可以给 boost :: thread 命名,以便调试器表和崩溃日志更可读?如何? 解决方案 您需要访问底层线程原语并以系统相关方式分配名称。调试和崩溃日志本质上是系统依赖的,而boost :: thread更多关于非系统依赖,即关于可移植性。 看起来( http://www.boost.org/doc/libs/1_43_0/doc/html/thread .html ),没有
..
我试图编译我的程序,但它不会链接。我已经指定了boost lib文件的路径,链接器仍然抱怨。这是我得到的链接错误: 1> Edproj.obj:error LNK2001:unresolved external symbol“class boost :: system: :error_category const& __cdecl boost :: system :: system_cat
..
我在当前的单线程应用程序中从其他人的库运行函数Foo。大多数时候,我打电话给Foo,它真的很快,有时,我打电话给Foo,它需要永远。我不是一个耐心的男人,如果Foo会永远,我想停止执行Foo,而不是用这些参数调用。 什么是最好的方法以受控的方式调用Foo(我当前的环境是POSIX / C ++),这样我可以在一定秒数后停止执行。我觉得在这里做的正确的事情是创建第二个线程调用Foo,而在我的主
..
目前,我们正在使用异步值非常沉重。 假设我有一个函数,确实是这样的: INT do_something(常量的boost ::了posix_time :: TIME_DURATION&安培; SLEEP_TIME) { BOOST_MESSAGE(“睡有点”); 提高:: this_thread ::睡眠(SLEEP_TIME); BOOST_MESSAGE(“说完睡
..