社区
工具平台和程序库
帖子详情
C++0x的标准库线程类用不了?
Houjun_pyc
2012-05-26 01:36:06
我用的IDE是qt creator,包含头文件的时候也有<thread>,但是用的时候就不行,比如std::thread就说thread不是std的成员,要是用using namespace std;就说没定义thread,明明都包含这个头文件了,不知道是什么原因,已经在qt中加了-std=c++0x,难道还需要什么么?
...全文
152
6
打赏
收藏
C++0x的标准库线程类用不了?
我用的IDE是qt creator,包含头文件的时候也有,但是用的时候就不行,比如std::thread就说thread不是std的成员,要是用using namespace std;就说没定义thread,明明都包含这个头文件了,不知道是什么原因,已经在qt中加了-std=c++0x,难道还需要什么么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Houjun_pyc
2012-05-27
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
有-d-为调试库?我怎么没记得这个,可能我从来没编译过boost的debug库。
另一个是release库
得看你命令行怎么写的,反正就是没加入库,要不就是错了
不过有_imp_开头的都是缺少动态库
而你的boost库看样子是静态库
那么你需要定义BOOST_THREAD_USE_LIB (类似,具体查文档,应该是这个)
boost属于跨平台,在使用thread的实现为本地win……
[/Quote]
谢谢!
xunxun
2012-05-26
打赏
举报
回复
有-d-为调试库?我怎么没记得这个,可能我从来没编译过boost的debug库。
另一个是release库
得看你命令行怎么写的,反正就是没加入库,要不就是错了
不过有_imp_开头的都是缺少动态库
而你的boost库看样子是静态库
那么你需要定义BOOST_THREAD_USE_LIB (类似,具体查文档,应该是这个)
boost属于跨平台,在使用thread的实现为本地win32线程,gcc是何线程无影响,gcc的线程实现只影响他自身的代码实现。
Houjun_pyc
2012-05-26
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
如果是win32线程,那么就不要使用std::thread,这是因为pthread-w32缺少部分posix实现
win32线程当然有个hacker方法使得std::thread生效,不过更改方法非常繁琐(还得自行实现部分代码),一句两句说不清。如果再加上那些time的,就更麻烦了。可以自行在MinGW邮件列表里搜索。
另一个解决方案是使用posix线程的gcc,不过需要重新编译Qt……
[/Quote]
嗯,我了解了一下posix线程和win32线程。我现在正在尝试用boost的thread库,我现在用这个线程编译的时候出错了。。。
我就这么一句boost::thread myThread(fun);
如下错误:
error: undefined reference to `_imp___ZN5boost6threadD1Ev'
error: undefined reference to `_imp___ZN5boost6thread12start_threadEv'
是编译的时候找不到具体的实现吧?但是我在前面已经加了libboost_thread-mgw46-mt-d-1_49.a,另外我发现还有个libboost_thread-mgw46-mt-1_49.a,不知道他俩什么区别,另外这个boost库的线程是不是也是posix线程?我现在Thread model是win32会不会有影响。望指导!
xunxun
2012-05-26
打赏
举报
回复
如果是win32线程,那么就不要使用std::thread,这是因为pthread-w32缺少部分posix实现
win32线程当然有个hacker方法使得std::thread生效,不过更改方法非常繁琐(还得自行实现部分代码),一句两句说不清。如果再加上那些time的,就更麻烦了。可以自行在MinGW邮件列表里搜索。
另一个解决方案是使用posix线程的gcc,不过需要重新编译Qt,因为ABI发生了更改
这个方面可以下载MinGW64的相关posix线程的gcc,Ruben一般都有说明哪个版本是posix线程,哪个是win32线程
不想重编译Qt的话,那么可以用其他的thread,比如boost的thread库
Houjun_pyc
2012-05-26
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
什么系统?什么编译器?
如果是GCC系列,只有posix线程才有std::thread
Linux下无障碍,Windows下需要使用winpthreads库重新编译gcc,并且使用posix线程,这个补丁我上一年已经发到MinGW64项目组
先看看gcc -v使用的Thread model是啥
[/Quote]
windows,gcc
看了一下,Thread model是win32,posix线程是什么?我现在需要怎么做?
xunxun
2012-05-26
打赏
举报
回复
什么系统?什么编译器?
如果是GCC系列,只有posix线程才有std::thread
Linux下无障碍,Windows下需要使用winpthreads库重新编译gcc,并且使用posix线程,这个补丁我上一年已经发到MinGW64项目组
先看看gcc -v使用的Thread model是啥
boost培训文档
BOOST是由c++
标准
化委员会成员参与开发的c++
标准
的准官方
库
,他是C++
标准
库
的发动机。下一代C++
标准
C++0x的
标准
库
很多来自于boost。Boost
库
覆盖了广泛的领域,从数学
库
到智能指针,从模板元编程
库
到预处理器
库
及语法词法分析,从
线
程到lambda表达式,等等。所有Boost
库
都具有宽松的许可证,确保
库
可以被自由使用于商用软件。
mingw-std-threads:Windows上的MinGW GCC当前仍缺少
标准
线
程实现
mingw-std-threads MinGW GCC当前仍缺少
标准
C ++ 11
线
程类的实现。 目标Windows版本 此实现应与Windows XP(无论Service Pack)或更高版本一起使用。 该
库
会自动(在编译时)检测到目标Windows版本,并选择一个利用可用Windows功能的实现。 在MinGW GCC中,可以通过命令行选项-D _WIN32_WINNT=...选择目标Windows版本。 使用0x0600为Windows Vista,或0x0601为Windows 7.请参阅“ ”的更多细节。 用法 这是仅标头的
库
。 要使用它,只需包括相应的mingw.xxx.h file ,其中xxx将是您通常包含的
标准
头mingw.xxx.h file的名称。 例如, #include "mingw.thread.h"替换#include
。 还提供了C
C++0X 多
线
程简介
1.C++0X 多
线
程简介 C++0x STL提供了对多
线
程的支持就不用再去选择跨平台的多
线
程
库
了,用
标准
的吧:) 看了一下BOOST和当前STL的接口几乎完全一致:)也就是说用boost thread写的程序应该把例如boost::thread, boost::unique_lock ...等等的地方换成std::thread, std::unique_lock...就OK了,个人...
C++ 0x:多
线
程
C++ 0x
标准
将增加对多
线
程的支持。以后所有的编译器都必须遵循新
标准
中对多
线
程的规定,这将会给不同平台上程序的移植带来很大的方便。 让我们先来看看std::thread类,它负责管理
线
程的执行过程。 启动
线
程 我们创建一个std::thread类的实例来启动一个新
线
程,用一个
线
程函数作为构造函数的参数。如 void do_work(); std::thread t(
c++11多
线
程编程(一):创建
线
程的三种方法
c++11
线
程
库
原始的c++
标准
仅支持单
线
程编程,新的c++
标准
(c++11或c++0x)于2011年发布,引入了新的
线
程
库
。 编译器要求: Linux: gcc 4.8.1 (完全并发支持) Windows: Visual Studio 2012 and MingW 在linux下的编译方法:g++ -std=c++11 sample.cpp -lpthread
工具平台和程序库
24,855
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章