当前位置: 首页>>代码示例>>C++>>正文


C++ io_service::stop方法代码示例

本文整理汇总了C++中boost::asio::io_service::stop方法的典型用法代码示例。如果您正苦于以下问题:C++ io_service::stop方法的具体用法?C++ io_service::stop怎么用?C++ io_service::stop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在boost::asio::io_service的用法示例。


在下文中一共展示了io_service::stop方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main( int argc, char **argv )
{
    // google::InitGoogleLogging(argv[0]);

    LOG(INFO) << "main thread " << THIS_THREAD_ID << " running...";

    // 如果没有,io_service 执行完了队列中所有缓存的job就退出,在getchar()之前terminating
    boost::asio::io_service::work io_work( std::ref(g_io_service) );

    boost::thread_group thrgrp;

    for (int i = 0; i < 5; ++i)
        thrgrp.create_thread( run_io_service );

    SLEEP_SECONDS(1);

    g_io_service.dispatch( std::bind(job_func, 1) );

    getchar();
    LOG(INFO) << "Trying to stop io_service...";

    // NOTE!!! 如果job_func里用dispatch就停不下来,嵌套
    g_io_service.stop();

    thrgrp.join_all();

    return 0;
}
开发者ID:charles-pku-2013,项目名称:CodeRes_Cpp,代码行数:28,代码来源:post_vs_dispatch.cpp

示例2: sighandler

/**
 * @brief Funkcia sa snazi co najbezpecnejsim sposobom ukoncit server v pripade nudze
 *
 * zastavuje celu sietovu vrstvu programu a uvolnuje pamat
 */
static void sighandler(int signum) 
{ 
    (void)signum;
    io_service.reset();
    io_service.stop();
    Manager::instance().Shutdown();
}
开发者ID:olii,项目名称:ICP,代码行数:12,代码来源:main.cpp

示例3: ShutdownThreadPool

void ShutdownThreadPool(std::vector<std::thread>& threadPool)
{
    _ioService.stop();

    for (auto& thread : threadPool)
        thread.join();
}
开发者ID:ShipsInc,项目名称:ServerCPP,代码行数:7,代码来源:Main.cpp

示例4: freceive_more_async

    void freceive_more_async(boost::asio::io_service & ios, aziomq::socket & socket,
                             const const_buf_vec & expected_bufs, int flags) {
        SYNC_LOG(__PRETTY_FUNCTION__);
         //create vector of raw bufs to fill from length of expected_bufs
        buf_vec_t buf_vec(std::distance(std::begin(expected_bufs),
                                        std::end(expected_bufs)));
        zero(buf_vec);

         //create azio buffer vector
        mutable_buf_vec bufs;
        init(bufs, buf_vec);

        auto it = std::begin(bufs);
        auto e = std::end(bufs);

        std::exception_ptr err;
        socket.async_receive_more(boost::asio::buffer(*it++),
                [&ios, &socket, &bufs, &it, e, &err, expected_bufs](const boost::system::error_code & ec,
                                                                   aziomq::socket::more_result mr) {
                    if (ec) {
                        err = std::make_exception_ptr(boost::system::system_error(ec));
                    } else {
                        for (; mr.second && it != e; ++it) {
                            mr = socket.receive_more(boost::asio::buffer(*it));
                            err = check_res(bufs, expected_bufs);
                        }
                    }
                    ios.stop();
                });
        ios.run();
        if (err != std::exception_ptr())
            std::rethrow_exception(err);
    }
开发者ID:iyedb,项目名称:aziomq4-x,代码行数:33,代码来源:multi_message_tests.hpp

示例5: freceive_async

    void freceive_async(boost::asio::io_service & ios, aziomq::socket & socket,
                            const const_buf_vec & expected_bufs, int flags) {
        SYNC_LOG(__PRETTY_FUNCTION__);
         //create vector of raw bufs to fill from length of expected_bufs
        buf_vec_t buf_vec(std::distance(std::begin(expected_bufs),
                                        std::end(expected_bufs)));
        zero(buf_vec);

         //create azio buffer vector
        mutable_buf_vec bufs;
        init(bufs, buf_vec);

        std::exception_ptr err;
        socket.async_receive(bufs,
                [&ios, &bufs, &err, expected_bufs](const boost::system::error_code & ec, size_t bytes_transferred) {
                    if (ec) {
                        err = std::make_exception_ptr(boost::system::system_error(ec));
                    } else {
                        err = check_res(bufs, expected_bufs);
                    }
                    ios.stop();
                });
        ios.run();
        if (err != std::exception_ptr())
            std::rethrow_exception(err);
    }
开发者ID:iyedb,项目名称:aziomq4-x,代码行数:26,代码来源:multi_message_tests.hpp

示例6: CtrlHandler

BOOL CtrlHandler(DWORD fdwCtrlType)
{
	switch (fdwCtrlType)
	{
		// Handle the CTRL-C signal. 
	case CTRL_C_EVENT:
		printf("Ctrl-C event\n\n");
		Beep(750, 300);
		io_service.stop();
		return(TRUE);

		// CTRL-CLOSE: confirm that the user wants to exit. 
	case CTRL_CLOSE_EVENT:
		Beep(600, 200);
		printf("Ctrl-Close event\n\n");
		io_service.stop();
		return(TRUE);

		// Pass other signals to the next handler. 
	case CTRL_BREAK_EVENT:
		Beep(900, 200);
		printf("Ctrl-Break event\n\n");
		io_service.stop();
		return FALSE;

	case CTRL_LOGOFF_EVENT:
		Beep(1000, 200);
		printf("Ctrl-Logoff event\n\n");
		io_service.stop();
		return FALSE;

	case CTRL_SHUTDOWN_EVENT:
		Beep(750, 500);
		printf("Ctrl-Shutdown event\n\n");
		io_service.stop();
		return FALSE;

	default:
		return FALSE;
	}
	/*
	boost::asio::signal_set signals(io_service, SIGINT, SIGTERM);
	signals.async_wait(
		boost::bind(&boost::asio::io_service::stop, &io_service));//*/
}
开发者ID:stormsw,项目名称:nlognetworktarget,代码行数:45,代码来源:main.cpp

示例7: stopLogThread

void stopLogThread()
{
    if (LogThreadWork.get())
    {
        LogThreadWork.reset();
        LogIoService.stop();
        LogThread.try_join_for(boost::chrono::milliseconds(100));
    }
}
开发者ID:remap,项目名称:ndnrtc,代码行数:9,代码来源:simple-log.cpp

示例8: subscribeHandler

void subscribeHandler(boost::asio::io_service &ioService, const std::vector<char> &buf)
{
    std::string msg(buf.begin(), buf.end());

    std::cerr << "Message: " << msg << std::endl;

    if( msg == "stop" )
        ioService.stop();
}
开发者ID:lg2779,项目名称:redisclient,代码行数:9,代码来源:async_pubsub.cpp

示例9: ShutdownThreadPool

void ShutdownThreadPool(std::vector<std::thread>& threadPool)
{
    sScriptMgr->OnNetworkStop();

    _ioService.stop();

    for (auto& thread : threadPool)
    {
        thread.join();
    }
}
开发者ID:Diyvol,项目名称:TrinityCore,代码行数:11,代码来源:Main.cpp

示例10: fsend_async

 void fsend_async(boost::asio::io_service & ios, aziomq::socket & socket, const const_buf_vec & bufs, int flags) {
     SYNC_LOG(__PRETTY_FUNCTION__);
     std::exception_ptr err;
     socket.async_send(bufs,
             [&ios,&err](const boost::system::error_code & ec, size_t bytes_transferred) {
                 if (ec)
                     err = std::make_exception_ptr(boost::system::system_error(ec));
                 ios.stop();
             });
     ios.run();
     if (err != std::exception_ptr())
         std::rethrow_exception(err);
 }
开发者ID:iyedb,项目名称:aziomq4-x,代码行数:13,代码来源:multi_message_tests.hpp

示例11: SignalHandler

void SignalHandler(const boost::system::error_code& error, int signalNumber)
{
    if (!error)
    {
        switch (signalNumber)
        {
        case SIGINT:
        case SIGTERM:
            _ioService.stop();
            break;
        }
    }
}
开发者ID:dect,项目名称:TrinityCore,代码行数:13,代码来源:Main.cpp

示例12: main

int main()
{
    boost::shared_ptr< boost::asio::io_service::work > work(new boost::asio::io_service::work(io_service));
    boost::thread_group worker_threads;
    Debug("Press [Enter] to exit.");
    for(int x = 0; x < 4;x++){
        worker_threads.create_thread(WorkerThread);
    }
    std::cin.get();
    io_service.stop();
    worker_threads.join_all();
    return 0;
}
开发者ID:nannanwuhui,项目名称:C-,代码行数:13,代码来源:main.cpp

示例13: stop

inline void AsioThreadPool::stop()
{
    m_work.reset();

    m_io_svc.stop();

    for (auto &i : m_threads)
    {
        if (i.joinable())
        {
            i.join();
        }
    }
}
开发者ID:ConfusedReality,项目名称:pkg_multithreading_thread-pool-cpp,代码行数:14,代码来源:asio_thread_pool.hpp

示例14: read_images

void read_images() {
    Frame* currentFrame;
    while (hasMoreFrames) {
        Frame* f = importer.next_frame();
        if (f) {
            in_buffer.push(f);
        }
        else {
            hasMoreFrames = false;
            ioService.stop();
        }
        boost::this_thread::sleep(boost::posix_time::milliseconds(30));
    }
}
开发者ID:h397wang,项目名称:computer-vision,代码行数:14,代码来源:main.cpp

示例15: main

int main(int argc, char** argv)
{
  if (2 > argc) {
    std::cout << "\nusage: " << argv[0] << " <term to track> [--full_screen]\n\n";
    return 1;
  }

  tw_term = argv[1];
  std::thread t1(setup_network_stream);

  draw_window(3 == argc);

  io_service.stop();
  t1.detach();

  return 0;
}
开发者ID:reklis,项目名称:twitter-image-wall,代码行数:17,代码来源:twimagewall.cpp


注:本文中的boost::asio::io_service::stop方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。