Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在boost::date\u time中启用纳秒的情况下使用boost::thread::timed\u join? 这里是一些C++代码,用最小的扩展说明我的问题: // uncomment the next line, to make it hang up: //#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG //needed for nanosecond support of boost #include <boost/thread.hpp> void foo() { while(true); } int main(int noParameters, char **parameterArray) { boost::thread MyThread(&foo); if ( MyThread.timed_join( boost::posix_time::seconds(1) ) ) { std::cout<<"\nDone!\n"; } else { std::cerr<<"\nTimed out!\n"; } } //取消注释下一行,使其挂起: //#定义BOOST\u DATE\u TIME\u POSIX\u TIME\u STD\u CONFIG//需要的BOOST\u日期\u时间\u标准配置//以支持纳秒级的BOOST #包括 void foo() { 虽然(正确); } int main(int noParameters,字符**参数数组) { boost::线程MyThread(&foo); if(MyThread.timed_join(boost::posix_time::seconds(1))) { std::cout_C++_Boost Thread_Boost Date Time - Fatal编程技术网

如何在boost::date\u time中启用纳秒的情况下使用boost::thread::timed\u join? 这里是一些C++代码,用最小的扩展说明我的问题: // uncomment the next line, to make it hang up: //#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG //needed for nanosecond support of boost #include <boost/thread.hpp> void foo() { while(true); } int main(int noParameters, char **parameterArray) { boost::thread MyThread(&foo); if ( MyThread.timed_join( boost::posix_time::seconds(1) ) ) { std::cout<<"\nDone!\n"; } else { std::cerr<<"\nTimed out!\n"; } } //取消注释下一行,使其挂起: //#定义BOOST\u DATE\u TIME\u POSIX\u TIME\u STD\u CONFIG//需要的BOOST\u日期\u时间\u标准配置//以支持纳秒级的BOOST #包括 void foo() { 虽然(正确); } int main(int noParameters,字符**参数数组) { boost::线程MyThread(&foo); if(MyThread.timed_join(boost::posix_time::seconds(1))) { std::cout

如何在boost::date\u time中启用纳秒的情况下使用boost::thread::timed\u join? 这里是一些C++代码,用最小的扩展说明我的问题: // uncomment the next line, to make it hang up: //#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG //needed for nanosecond support of boost #include <boost/thread.hpp> void foo() { while(true); } int main(int noParameters, char **parameterArray) { boost::thread MyThread(&foo); if ( MyThread.timed_join( boost::posix_time::seconds(1) ) ) { std::cout<<"\nDone!\n"; } else { std::cerr<<"\nTimed out!\n"; } } //取消注释下一行,使其挂起: //#定义BOOST\u DATE\u TIME\u POSIX\u TIME\u STD\u CONFIG//需要的BOOST\u日期\u时间\u标准配置//以支持纳秒级的BOOST #包括 void foo() { 虽然(正确); } int main(int noParameters,字符**参数数组) { boost::线程MyThread(&foo); if(MyThread.timed_join(boost::posix_time::seconds(1))) { std::cout,c++,boost-thread,boost-date-time,C++,Boost Thread,Boost Date Time,不幸的是,我不认为你的问题可以像写的那样得到很好的解决。因为你链接的库是在没有纳秒支持的情况下编译的,根据定义,如果你碰巧对任何已经编译到库二进制文件的片段启用了纳秒支持,那么你就违反了一个定义规则。在这种情况下,你是错的在对timed\u join的函数调用中闪烁它 显而易见的解决办法是决定放弃哪一个比较不痛苦:建立自己的提升,还是移除纳秒级 不太明显的“黑客”可能完全有效,也可能不完全有效的方法是编写自己的timed_join包装器,该包装器接受一个线程对象和一个int,表示秒或毫秒或其他值

不幸的是,我不认为你的问题可以像写的那样得到很好的解决。因为你链接的库是在没有纳秒支持的情况下编译的,根据定义,如果你碰巧对任何已经编译到库二进制文件的片段启用了纳秒支持,那么你就违反了一个定义规则。在这种情况下,你是错的在对
timed\u join
的函数调用中闪烁它

显而易见的解决办法是决定放弃哪一个比较不痛苦:建立自己的提升,还是移除纳秒级


不太明显的“黑客”可能完全有效,也可能不完全有效的方法是编写自己的
timed_join
包装器,该包装器接受一个线程对象和一个
int
,表示秒或毫秒或其他值。然后,该函数在一个源文件中实现,除此之外没有任何其他内容,并且不启用纳秒时间,用于调用已编译的boost二进制。我想再次强调,如果在任何时候你不能完全分离这些用法,你将违反一个定义规则,并陷入未定义的行为。

注意,在最近版本的boost中,timed_join是不推荐使用的。