Giriş
io_service eğer yapacak iş yoksa sonlanır. io_service.run () metodu sonlanmasın istiyorsak work sınıfını kullanırız.
Constructor
Örnek 1
Şöyle yaparız.
Heap'te yaratmak istersek şöyle yaparız
Şöyle yaparız.
work nesnesi yaşadığı müddetçe is_service nesnesi döngüsünden çıkmaz. Tüm işler bittikten sonra döngüden çıkması için yardım bir sınıf kullanırız. Şöyle yaparız.
io_service eğer yapacak iş yoksa sonlanır. io_service.run () metodu sonlanmasın istiyorsak work sınıfını kullanırız.
Constructor
Örnek 1
Şöyle yaparız.
boost::asio::io_service ios;
boost::asio::io_service::work w (
ios);
Örnek 2Heap'te yaratmak istersek şöyle yaparız
boost::asio::io_service ios;
auto w = std::make_shared<boost::asio::io_service::work> (ios);
Örnek 3Şöyle yaparız.
boost::asio::io_service ios;
boost::asio::io_service::work *w = new boost::asio::io_service::work (ios);
Daha sonra bu nesneyi sileriz.delete w;
Yardımcı Sınıfwork nesnesi yaşadığı müddetçe is_service nesnesi döngüsünden çıkmaz. Tüm işler bittikten sonra döngüden çıkması için yardım bir sınıf kullanırız. Şöyle yaparız.
#include <boost/asio.hpp>
#include <boost/optional.hpp>
struct workutil {
using io_service = boost::asio::io_service;
workutil (io_service& ios) :
m_work (io_service::work (ios))
{ }
void release() {
m_work.reset();
}
void enlist(io_service& ios) {
m_work.emplace (io_service::work (ios));
}
private:
boost::optional<io_service::work> m_work;
};
Şöyle yaparızboost::asio::io_service ios;
workutil lock (ios);
...
lock.release();
Hiç yorum yok:
Yorum Gönder