boost :: this_thread :: sleep()立即返回

时间:2013-06-24 16:11:53

标签: c++ multithreading boost boost-thread

我在Windows上使用一个非常简单的提升示例,我遇到了几个奇怪的问题。

以下是该计划:

// BoostThreadTest.cpp : Defines the entry point for the console application.
//

#define BOOST_ALL_NO_LIB

#include "stdafx.h"
#include <iostream>
#include <boost/thread.hpp>
#include <boost/date_time.hpp>

void workerFunc()
{
    boost::posix_time::seconds workTime(3);
    std::cout << "Worker: running" << std::endl;

    boost::this_thread::sleep(workTime);

    std::cout << "Worker: finished" << std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
    std::cout << "main: startup" << std::endl;

    boost::thread workerThread(workerFunc);

    std::cout << "main: waiting for thread" << std::endl;

    boost::posix_time::seconds workTime(10);
    boost::this_thread::sleep(workTime);
    //workerThread.join();

    std::cout << "main: done" << std::endl;
    return 0;
}

主要问题是boost::this_thread::sleep中的workerFunc调用实际上并未休眠,而是立即返回。当我尝试与线程连接时,我在调试器中也得到一个通用异常。真正奇怪的是,在main方法中调用boost::this_thread::sleep可以正常工作!

有没有人知道问题可能是什么?

我在Windows 7上,使用boost 1_53_0。我将boost线程库构建为静态库,并将其与使用Visual Studio 2008构建的应用程序链接。

0 个答案:

没有答案