OTP gen_server перехватывает полученные сообщения - PullRequest
0 голосов
/ 01 ноября 2019

Я использую OTP gen_server. Могу ли я использовать функцию, которая отправляет сообщение некоторому процессу и получает ответ? Меня беспокоит то, что это ответное сообщение будет перехвачено get_server и, следовательно, обработано handle_info вместо моей функции.

Если я хочу иметь такую ​​функцию, как мне это сделать?

1 Ответ

5 голосов
/ 01 ноября 2019

Если у вас есть выражение receive в одной из функций обратного вызова gen_server, оно не будет прервано. Однако он будет получать сообщения, предназначенные для самого gen_server, поэтому вы можете захотеть использовать очень специфический шаблон, чтобы оставить другие сообщения в почтовом ящике процесса для последующей обработки.

Обратите внимание, что это сделает gen_serverобработка сообщений, не отвечающих на другие вызовы, в ожидании ответного сообщения.

...