Я использую boost::io_service для создания пула потоков, который выполняет вычислительные задания параллельно. Некоторые задания не могут выполняться одновременно, что, как мне кажется, является идеальным применением boost::io_service::strand. Поскольку порядок, в котором выполняются последовательные задания, не имеет значения, я спрашиваю, какой из двух способов использования цепочки мне следует использовать:
strand.post(bind(jobA...));
or
io_service.post(strand.wrap(bind(jobA...)))
Если я правильно понимаю документы boost, первая версия гарантирует, что задания будут выполняться в том же порядке, в котором они были опубликованы, тогда как вторая версия не дает никаких гарантий.
У меня вопрос: какой из них быстрее?