1

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実際にはスリープ状態ではなく、すぐに戻ってくることです。また、スレッドに参加しようとすると、デバッガーで一般的な例外が発生します。本当に奇妙なことはboost::this_thread::sleep、メイン メソッドでの呼び出しが正常に機能することです。

問題が何であるかを知っている人はいますか?

Windows 7 でブースト 1_53_0 を使用しています。ブースト スレッド ライブラリをスタティック ライブラリとしてビルドし、Visual Studio 2008 を使用してビルドしたアプリケーションにリンクしています。

4

0 に答える 0