社区
工具平台和程序库
帖子详情
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,难道还需要什么么?
...全文
151
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版本。 使用
0x
0600为Windows Vista,或
0x
0601为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,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章