Xcode上的Boost's线程组
我试图在我的项目中遇到错误后使用C ++在Xcode(4.2)上运行一个小测试程序. #include #include int main (int argc, const char * argv[]) { boost::thread_group tg; return 0; } 但是整个程序无法构建,输出错误: Undefined symbols for architecture x86_64: "boost::thread::~thread()", referenced from: boost::thread_group::~thread_group()in main.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 然后我尝试使用
2 2023-12-19
编程技术问答社区
boost::thread sleep()是做什么的?
我目前正在为Boost线程上一个小型包装班,但我真的没有得到睡眠功能的工作原理,这就是我到目前为止所拥有的: BaseThread::BaseThread(){ thread = boost::thread(); bIsActive = true; } BaseThread::~BaseThread(){ join(); } void BaseThread::join(){ thread.join(); } void BaseThread::sleep(uint32 _msecs){ if(bIsActive) boost::this_thread::sleep(boost::posix_time::milliseconds(_msecs)); } 这就是我到目前为止实现它的方式,但我真的不明白静态this_thread ::睡眠方法如何知道如果我的线程包装器的多个实例处于活动状态,则可以进入哪个线程.这是实施它的正
22 2023-12-15
编程技术问答社区
能否阻止cin等待输入?
在图形应用程序中,我使用控制台输入执行调试命令.当创建控制台时,还会创建一个新线程,以收集处理所有输入的用户命令,图形应用程序将继续并行运行.我使用boost ::线程库. 到目前为止,它运行良好,但是我还没有找到一个不错的解决方案来停止执行此线程.该线程始终在等待用户输入: while(appRunning) { std::cin>>theUserCommand; // ...do stuff } 然后,当图形应用程序结束时,它将停止所有控制台函数,其中我包括线程: appRunning = false; // do some more related clean up myListeningThread->join(); 您可以看到std :: cin将在加入后等待用户输入. 我尝试使用的解决方案之一是创建事件"合成击键",std :: cin将获得您发送的任何价值,即带有Enter,该线程将很好地结束,此解决方案是可怕的,我
36 2023-12-05
编程技术问答社区
Boost库和CreateThread赢得API
我有一个类,例如: class MyStreamReader { public: MyStreamReader(MyPramameter myPram) {.....} ~MyStreamReader() {} DWORD WINAPI ReaderThread(LPVOID *lpdwThreadParam ) { //.... } }; 我想用 winapi createThread 致电ReaderThread. 但CreateThread想要读取函数想要一个静态函数. 在某些形式中,据说这是有可能使用的增强库: CreateThread(NULL, 0, boost::bind(&MyStreamReader::ReaderThread,this), (void*)&myParameterObject), 0, NULL); 但是我有汇编错误: 'CreateThread' : ca
2 2023-12-04
编程技术问答社区
Boost线程专用存储问题(boost/thread/tss.hpp)
增强线程库具有特定(本地)存储.我已经浏览了源代码,看来TSS功能可以在应用程序中使用任何现有线程,而不管天气是从boost :: thread -i.e.创建的,这意味着某些回调已在内核注册到挂钩在回调函数中,当线程或进程不在范围内时,可以调用任何TSS对象的破坏者.我找到了这些回调. 我需要从openssl中的openssl缓存hmac_ctx在各种Web-Servers的Worker线程内(请参见此,详细的问题是我要做的事情),因此,我不控制线程的终生 - 网络服务器确实如此.因此,我将使用boost :: thread. 创建的线程上的TSS功能. 我只是想在开始实施缓存逻辑之前验证我的假设,我的逻辑中是否有缺陷? 解决方案 你是对的.您可以将其用于boost :: thread不会创建的线程. 如果您在test_tss.cpp中查看它们,您可以看到它们的准确测试,并且应该与POSIX和Windows线程一起使用. 其他解决方案 这是部分正确的,因为
10 2023-12-02
编程技术问答社区
Visual Studio 2015 c++/CLI boost::thread
这个问题已经存在于所有Visual Studio版本中,但是在VS 2015中,"旧技巧"似乎不再起作用了. 这是我尝试的: 在VS 2013和2015中创建一个Windows表单应用程序(自VS 2013以来缺少宏,请参阅此帖子:找不到C ++的Windows表单应用程序) 添加Boost标头路径到达附加目录 在cpp 中添加#include" boost/thread.hpp" 添加以下预处理器定义(BOOST_USE_WINDOWS_H; BOOST_ALL_NO_LIB; BOOST_ALL_DYN_LINK) 添加链接依赖项以提升线程和系统libs 构建小型测试应用程序与vs 2013和2015汇编和链接.但是,在启动在vs 2015中构建的应用程序时,该应用程序崩溃了: testclrforms.exe中的0x0000000077c3eb18(ntdll.dll)的例外:0xc00000055:访问违规位置0xffffffff
8 2023-11-24
编程技术问答社区
Boost.Thread在VS2010中抛出bad_alloc异常
包括我得到此例外: First-chance exception at 0x7c812afb in CSF.exe: Microsoft C++ exception: boost::exception_detail::clone_impl at memory location 0x0012fc3c.. First-chance exception at 0x7c812afb in CSF.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000.. 我无法抓住它,在内存位置打破了我的kernel32.dll,在这一点上,我无法说出发生了什么. 测试柜: #include int main() { return 0; } 编译器
6 2023-11-23
编程技术问答社区
program.exe。Native'已退出,代码为255(0xff)。
我正在使用boost线程,并且在使用/MD编​​译时,一切都可以很好地工作 我得到的问题是program.exe:本机'已使用代码255(0xff)退出. 这在这条线上发生: thread_1 =线程(testThread,test); 深入研究后,我意识到问题是_crtheap等于0,即:它不是初始化的. 如Mlock.C 所示 /* * Check if CRT is initialized. The check if _crtheap is initialized * will do the job. More over we had to add this test in initlocks because * in debug version we don't endup calling lock before calling malloc_base, * where we check for crtheap
10 2023-11-20
编程技术问答社区
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error> >。
我需要一些例外的帮助,我正在实现一个NPAPI插件,以便能够使用浏览器扩展程序中的本地插座,以便我使用Firebreath Framework. 对于套接字和连接性,我将使用异步调用的Boost ASIO和5个工作线程的线程池. 另外,我有一个每线程的截止日期来实现传输超时. 我使用插件的扩展工作流是这样的: 打开插座1(这启动了Async_receive和截止日期 async_wait) 在插座1 中写入 获得响应1 打开另一个插座2 在插座2 中写入 写插座1 关闭插座1 (socket.cancel(),deadline.cancel(),socket.shutdown(),socket 发布). 获得响应2 写插座2 关闭插座2 由于一切都是跨语言,并且异步确实很难调试,但是所有打开,写或关闭都是从javaScript调用的,并且从插座1中读取了读取的读数1,呼叫2,写2,写2,写1和关闭1,按照该顺序. 也
2 2023-11-20
编程技术问答社区
试图链接Boost 1.52主题
我正在尝试编译我的程序,但根本不会链接.我已经指定了Boost LIB文件的路径,链接器仍然抱怨.这是我遇到的链接错误: 1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ) 1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boos
2 2023-11-20
编程技术问答社区
调试boost::thread应用程序,假阳性率高
我已经编程了一个boost ::线程应用程序,我可能会有一些比赛条件.我想调试这个程序.因此,我使用了以下Valgrind工具: halgrind drd 不幸的是,它们具有非常错误的正率.因此,使用下面的真正简单的程序valgrind --tool=drd抱怨大约94个错误,应该没有.因此,有了我的复杂程序,我会遇到15000个错误.因此,很难找到实际错误. 我可以通过以下升压库1.46.0和1.47.0复制这种行为.并使用Valgrind 3.7.0 Svn和Valgrind 3.8.0 Svn.我尝试了Ubuntu 11.10和Mac OS X 10.7的操作系统. GCC 4.2.1和GCC 4.6.1. 的编译器 #include #include void run() { //do some stuff here } int main(int argc, char* argv[])
2 2023-11-12
编程技术问答社区
在boost asio HTTP服务器3的例子中,是否有一个bug或boost bug?
Boost Library版本1.53 Debian Linux 6.0(X86_64上的Linux 2.6.32-5-AMD64) 当Valgrind Log包含许多警告时,很难测试自己的软件. 因此,没有更改,我构建了HTTP Server3示例并在Valgrind下运行. 请看一下.我想念什么吗? valgrind -tool = helgrind -log-file = valgrind.log ./server3 0.0.0.0 83 5/root/root/server3 这是Helgrind Log(编辑为30000个身体角色限制,完整日志 http://pastebin.com/vkbr9vsa ) : Helgrind, a thread error detector Copyright (C) 2007-2012, and GNU GPL'd, by OpenWorks LLP et al. Using Valgrind-3.9.0.SVN
2 2023-11-12
编程技术问答社区
未定义的对`boost::chrono::system_clock::now()'的引用 | Boost, and cpp | netlib
我来这里要求解决令我沮丧的情况.很多. 首先,我在Windows上,使用Mingw用作编译器(C ++). 我在使用CPP-NETLIB和SSL(试图发布到HTTPS网站)的使用程序时遇到了一些问题.我相信一切都在井井有条之外,除了一个不断逃避我的错误. C:\boost_1_50_0\boost_1_50_0\stage\lib\libboost_thread-mgw46-mt-1_50.a(thread.o):thread.cpp|| undefined reference to 'boost::chrono::system_clock::now()' 我敢肯定,我已经链接到Chrono,以及BOOST_ROOT/stage/lib中的所有.a libs.我已经尝试重新排序,以便在线程之前链接Chrono.没有任何帮助. 我尝试在我的IDE设置中定义BOOST_CHRONO_INLINED,而多个conf.hpp仅使其仅使其成为标题,这无济于事. 我很确定这是一个
26 2023-11-06
编程技术问答社区
在Linux SMP上的提升线程和不存在的速度提升
我使用boost :: thread编写了一个小示例C ++程序.由于它是215行,所以我已经将其发布在Pastebin上 http://pastebin.com/lrz24w7d 该程序创建了大量的浮子(当前1GB),并首先依次添加它们,然后使用许多线程(托管在device_matrix类中).假设机器是SMP,我希望从代码中看到加速.在我的Windows机器上,我在使用4个Device_matrix实例时看到了一个四倍的加速度(在我的双核超网Intel Core2 CPU上给出4个线程). Windows上的输出如下: starting computation device_matrix count 4 elements 268435456 UINT_MAX 4294967295 data size total 1024 mb size per device_matr
12 2023-11-02
编程技术问答社区
Boost.Thread链接-boost_thread vs. boost_thread-mt
It's not clear to me what linking options exist for the Boost .thread 1.34.1 库.我在Ubuntu 8.04上,我发现在链接编译和运行时使用boost_thread或boost_thread-mt时,我没有看到有关这些文档或上述链接中的任何其他链接选项的文档. 有什么启动.线程链接选项可用,它们是什么意思? 解决方案 好... 第一个有趣的事情是名称中的-mt修饰符是指出库可以进行多线程.这可能会导致我们相信boost_thread(没有此修饰符)可以是多线程 - 但真正的是(如我自己的Ubuntu 10.04框所示),boost_thread是与boost_thread-mt的软链接,这意味着两者是一个且相同的. 如果要验证它,则可以在Ubuntu上打开控制台(由于名称很长,因此将控制台全屏制作完整屏幕),然后键入: cd /usr/lib 移至Boost库所在的目录.然后
10 2023-11-01
编程技术问答社区
C++: 外部应用程序调用的超时
对于我正在处理的C ++程序,我必须调用外部应用程序来执行某些操作.我无法修改应用程序.此操作可能需要太多时间,因此我必须添加超时.我尝试使用System()并提升线程 int main() { [...] boost::thread t(function1); t.timed_join(boost::posix_time::seconds(10)); [...] return 0; } void function1() { system("external application"); } 但是,当我返回主10秒后,外部应用程序仍在背景中运行. 使用exec()而不是system()无效,因为我"丢失"了主.我能做些什么? 我在Linux上. 解决方案 使用 fork(2),, execve(2), waitpid(2)而不是system(在内部使用这些syscalls).阅读高级linux编程解释了 trick 详细信息. 您可能
12 2023-10-21
编程技术问答社区
在返回受保护数据时如何使用lock_guard
我有一个问题,即使用boost::lock_guard(或类似的示波器锁)以及使用return语句中锁定的变量. . 如何破坏本地对象并复制返回值的顺序?返回值优化如何影响这? 示例: Data Class::GetData() { boost::lock_guard lock(this->mMutex); return this->mData; } 这是正确的(如果MDATA是由mmutex保护的变量)?还是我必须使用本地范围和临时范围,如以下示例所示: Data Class::GetData() { Data ret; { boost::lock_guard lock(this->mMutex); ret = this->mData; } return ret; } 解决方案 仅是直接返回,因为您的第一个示例是正确
10 2023-10-20
编程技术问答社区
使用Boost线程和io_service来创建线程池
我已经环顾了堆栈溢出,并且有一些非常好的答案(我的代码实际上是基于在这里这个答案)但是由于某种原因,我会得到怪异的行为 - 在该线程_FUNC中应称为LS1次,但在线程退出之前仅在0到2次之间运行.似乎ioservice.stop()在完成之前已经切断了排队的工作,但是据我了解,这不应该发生.这是相关代码段: boost::asio::io_service ioService; boost::asio::io_service::work work(ioService); boost::thread_group threadpool; for (unsigned t = 0; t
8 2023-10-20
编程技术问答社区
使用boost创建一个线程池
是否可以使用Boost的线程创建线程池? 我一直在Boost的Libs上看,找不到线程池经理(或类似的东西)... 有办法做到吗? tnx! 解决方案 有一个非官方(但) threadpool "> threadpool in boost. 但是,要实施一个人,这不是一个问题,尤其是如果伟大的通用不是主要目标的话.想法:您的ThreadPool可以使用TaskType类型和工人数量进行参数化.必须给出TP的处理程序功能,该功能采用TaskType. TP包含一个添加任务的队列.实际线程函数仅从队列中获取一个任务,并调用传递的处理程序.这样的东西. 其他解决方案 我知道答案已被接受,如果您现在需要这个,并且您不能努力编写自己的线程池,您可以尝试使用Boost Asio io_service使用并发提示(即多少个)线程应该运行),然后将其发布到此io_service ...只是一个想法..
8 2023-10-20
编程技术问答社区
C++线程池
什么是良好的开源实现线程池供C ++用于生产代码(例如Boost)? 请提供您自己的示例代码或链接到示例代码使用. 解决方案 我认为它仍然不被提升,而是一个很好的凝视点: threadpool .使用网站的一些用法示例: #include "threadpool.hpp" using namespace boost::threadpool; // Some example tasks void first_task() { ... } void second_task() { ... } void third_task() { ... } void execute_with_threadpool() { // Create a thread pool. pool tp(2); // Add some tasks to the pool. tp.schedule(&first_task); tp.schedule(&secon
4 2023-10-20
编程技术问答社区