приветствую.
слышал, что в VS2015U2 есть await
кто-нибудь уже игрался? какие отзывы можете дать по безглючности и какие прикладные задачи вы успешно решили с помощью этой фичи?
так же интересует каким образом можно реализовать следующую задачу:
у меня внутри приложения есть два слоя rpc:
1) по сети от внешний клиентов, своя либа без возможности прикрутить корутины
2) свой rpc (то есть там не сеть, а своя шина c потоками и очередями сообщений), хочу его завернуть в корутины в надежде, что код упростится
какие вспомогательные вещи надо написать, чтобы код вызывающей стороны упростился без пенальти по производительности?
пример текущего кода
class InputBus
{
void PushRequest1(Request1 r); <-- contains client id
}
class OutpuBus
{
void PushReply1(Reply1 r)
}
// client (может быть много таких клиентов, у всех уникальный id в рамках процесса)
bus1.PushRequest1(clientId, r);
ClientHandler()
{
bus1.SubscribeOnMessage(this, OnReply1)
}
ClientHandler::OnReply1(Reply1 r)
{
//find by client id
client->HandleReply1(r);
}
//logic thread
Logic()
{
bus2.SubscribeOnMessage(this, OnRequest1);
}
Logic::OnRequest1(r1)
{
//do something in this thread
bus.SendReply1(clientId, reply);
}
могу попробовать переформулировать: есть два потока, которые общаются пересылкой сообщений, причем сообщения имеют два типа: request / reply
как построить взаимодействие на корутинах (с использованием всяких новых слов await/async/yield/resumable function)?
судя по
https://blogs.msdn.microsoft.com/vcblog/2015/11/30/coroutines-in-visual-studio-2015-update-1/ , надо как-то определить методы await_ready / await_suspend / await_resume , но не знаю то ли это