How can I execute two threads asynchronously using boost?

后端 未结 1 798
野趣味
野趣味 2020-12-04 22:33

I have the book \"beyond the C++ standard library\" and there are no examples of multithreading using boost. Would somebody be kind enough to show me a simple example where

相关标签:
1条回答
  • 2020-12-04 23:06

    This is my minimal Boost threading example.

    #include <boost/thread.hpp>
    #include <iostream>
    
    using namespace std;
    
    void ThreadFunction()
    {
        int counter = 0;
    
        for(;;)
        {
            cout << "thread iteration " << ++counter << " Press Enter to stop" << endl;
    
            try
            {
                // Sleep and check for interrupt.
                // To check for interrupt without sleep,
                // use boost::this_thread::interruption_point()
                // which also throws boost::thread_interrupted
                boost::this_thread::sleep(boost::posix_time::milliseconds(500));
            }
            catch(boost::thread_interrupted&)
            {
                cout << "Thread is stopped" << endl;
                return;
            }
        }
    }
    
    int main()
    {
        // Start thread
        boost::thread t(&ThreadFunction);
    
        // Wait for Enter 
        char ch;
        cin.get(ch);
    
        // Ask thread to stop
        t.interrupt();
    
        // Join - wait when thread actually exits
        t.join();
        cout << "main: thread ended" << endl;
    
        return 0;
    }
    
    0 讨论(0)
提交回复
热议问题