Заметка, которая должна служить памятником собственной тупости очередным подтверждением мудрости Алана Перлиса, сказавшего, что простота не предшествует сложности, а следует за ней.
Код из версии 5.5.3 |
Он же в версии 5.5.4 |
void
create_coop( so_5::rt::environment_t & env )
{
using namespace so_5::disp::thread_pool;
auto c = env.create_coop( so_5::autoname,
create_disp_binder( "thread_pool",
[]( params_t & p ) { p.fifo( fifo_t::individual ); } ) );
std::unique_ptr< a_collector_t > collector{ new a_collector_t{ env } };
std::unique_ptr< a_performer_t > performer{
new a_performer_t{ env, collector->so_direct_mbox() } };
collector->set_performer_mbox( performer->so_direct_mbox() );
std::unique_ptr< a_generator_t > generator{
new a_generator_t{ env, collector->so_direct_mbox() } };
c->add_agent( std::move( collector ) );
c->add_agent( std::move( performer ) );
c->add_agent( std::move( generator ) );
env.register_coop( std::move( c ) );
}
|
|
void
create_coop( so_5::rt::environment_t & env )
{
using namespace so_5::disp::thread_pool;
auto disp = create_private_disp( 3 );
auto c = env.create_coop( so_5::autoname,
disp->binder( params_t{}.fifo( fifo_t::individual ) ) );
auto collector = c->make_agent< a_collector_t >();
auto performer = c->make_agent< a_performer_t >(
collector->so_direct_mbox() );
collector->set_performer_mbox( performer->so_direct_mbox() );
c->make_agent< a_generator_t >( collector->so_direct_mbox() );
env.register_coop( std::move( c ) );
}
|
|
И вот что не понятно: как можно было до этого не додуматься если не полтора или год назад, то хотя бы полгода назад?
А вообще C++11 рулит. И бибикает :)))
PS. Похоже, что версия 5.5.4, над которой сейчас идет работа, при сохранении совместимости с предыдущими версиями очень серьезно изменит стиль программирования с помощью SObjectizer-а.
Комментариев нет:
Отправить комментарий