{"id":314422,"date":"2020-12-07T09:00:19","date_gmt":"2020-12-07T09:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314422"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314422","title":{"rendered":"\u041d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438? \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0432\u043e\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043b\u044f SObjectizer \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u043e\u0439"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/t4\/lu\/d6\/t4lud6njzta_ywy9qwxpx20bycy.jpeg\"><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\" rel=\"nofollow\">SObjectizer<\/a> \u2014 \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f C++, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043a\u0430\u043a Actor Model, Communicating Sequential Processes \u0438 Publish\/Subscribe.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0432 SObjectizer \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b. \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u0430\u043a\u0442\u043e\u0440\u044b (\u0430\u0433\u0435\u043d\u0442\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 SObjectizer-\u0430) \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0432 SObjectizer \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u043c\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432 \u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0414\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 <a href=\"https:\/\/habr.com\/ru\/post\/353712\/\">\u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c<\/a> \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043b\u044f SObjectizer-\u0430 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f SObjectizer \u0443\u0441\u043f\u0435\u043b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0440\u0432\u0430 \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 5.6, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438 5.7. \u0418 \u0432 \u044d\u0442\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 <a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\/wiki\/v.5.6.0\" rel=\"nofollow\">\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0439<\/a> \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 5.5, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0432 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<h1 id=\"o-reshaemoy-zadache-v-dvuh-slovah\">\u041e \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445<\/h1>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0432\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f: <code>msg_result<\/code> \u0441 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u043e\u0439 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 <code>msg_status<\/code> \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <code>msg_status<\/code> \u043c\u043e\u0433\u0443\u0442 \u0438\u0434\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043e\u0434\u043d\u043e <code>msg_result<\/code> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043e 1000 <code>msg_status<\/code>. \u0418 \u043d\u0430\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0443\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 900 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 <code>msg_status<\/code> \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>msg_result<\/code> \u0432\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043d\u0435 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0430 \u0432 \u0441\u0430\u043c\u043e\u0435 \u0435\u0435 \u043d\u0430\u0447\u0430\u043b\u043e. \u0427\u0442\u043e\u0431\u044b <code>msg_result<\/code> \u043d\u0435 \u0436\u0434\u0430\u043b\u043e \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u0433\u0440\u0435\u0431\u0443\u0442\u0441\u044f 900 \u0441\u0442\u0430\u0440\u044b\u0445 <code>msg_status<\/code>.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hz\/ew\/xb\/hzewxbuf_e9d5v0m-_8iddryky0.png\"><br \/>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u041d\u043e \u0441 \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0418 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c\u0438 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 SObjectizer-\u043e\u0432\u0441\u043a\u0438\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u0438 \u0442\u0430\u043a\u0438\u0435. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0438\u0445 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432. \u0412\u043e\u043f\u043b\u043e\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0432 \u0436\u0438\u0437\u043d\u044c \u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<h1 id=\"kak-dispetchery-svyazany-s-politikoy-dostavki-soobscheniy-do-agentov\">\u041a\u0430\u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432?<\/h1>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432 SObjectizer-\u0435 \u2014 \u044d\u0442\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0430\u0433\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442 Bob, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>msg_result<\/code> \u0438\u0437 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 mbox. \u041a\u043e\u0433\u0434\u0430 \u0432 mbox \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f <code>msg_result<\/code>, \u0442\u043e \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c Bob-\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043e \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e. \u0418 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0432 \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u043e\u0441\u0442 \u0432\u0441\u0442\u0430\u044e\u0442 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432 \u0435\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0430\u0433\u0435\u043d\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 SObjectizer-\u0435, \u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443. \u0418 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u0443 \u0434\u0430\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <em>event_queue<\/em>. \u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043a\u0440\u044b\u0442\u0430 \u043d\u0435\u043a\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0435\u0440\u0438\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0443, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443, \u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 <em>\u0437\u0430\u044f\u0432\u043a\u0443<\/em> (demand) \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0437\u0430\u044f\u0432\u043a\u0443 \u0433\u0434\u0435-\u0442\u043e \u0443 \u0441\u0435\u0431\u044f (\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>demand_queue<\/em>).<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0432 SObjectizer \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6j\/57\/0t\/6j570tztr4ecryxjp2_ihkgpsku.png\"><br \/>  \u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0432 mbox, \u0442\u043e mbox \u0432\u0438\u0434\u0438\u0442 Bob-\u0430 \u0432 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430\u0445 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Bob-\u0443: \u0432\u043e\u0442 \u0442\u0435\u0431\u0435 \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. Bob \u0431\u0435\u0440\u0435\u0442 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0439 <em>event_queue<\/em>. \u0418 \u0443\u0436\u0435 \u044d\u0442\u043e\u0442 <em>event_queue<\/em> \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 <em>\u0437\u0430\u044f\u0432\u043a\u0443 (demand)<\/em> \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 Bob. \u0417\u0430\u044f\u0432\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <em>demand_queue<\/em> \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043d\u0438\u0442\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442 \u0437\u0430\u044f\u0432\u043a\u0438 \u0438\u0437 <em>demand_queue<\/em> \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u042d\u0442\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0438\u0442\u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0438 \u0445\u0440\u0430\u043d\u044f\u0442 \u0432 \u0441\u0432\u043e\u0438\u0445 <em>demand_queue<\/em> \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0410 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0442.\u0435. <code>msg_result<\/code> \u0432\u043f\u0435\u0440\u0435\u0434 <code>msg_status<\/code>), \u0442\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u0443 \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0443\u044e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442.<\/p>\n<p>  <\/p>\n<h2 id=\"a-prioritetov-dlya-soobscheniy-v-sobjectizer-5-i-net-\">\u0410 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 SObjectizer-5 \u0438 \u043d\u0435\u0442 \ud83d\ude41<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u0441\u0435\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u043e\u0442.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u0438 \u0432 SObjectizer-4. \u041d\u043e \u043e\u043d\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437 \u0438\u043b\u0438 \u0434\u0432\u0430. \u0417\u0430\u0442\u043e \u0445\u043b\u043e\u043f\u043e\u0442 \u0441 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 SObjectizer-5 \u043e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0430\u0433\u0435\u043d\u0442\u0430 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f. \u0418 \u0437\u0430 10 \u043b\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f SObjectizer-5 \u043f\u043e\u0436\u0430\u043b\u0435\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435, \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u0432 SObjectizer-5 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 <a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\/wiki\/SO-5.7-InDepth-Agent-Priorities\" rel=\"nofollow\">\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430<\/a>. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 SObjectizer-5 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0440\u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<h2 id=\"tak-kak-mozhno-reshit-zadachu-s-msg_result-i-msg_status\">\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 <code>msg_result<\/code> \u0438 <code>msg_status<\/code>?<\/h2>\n<p>  <\/p>\n<h3 id=\"ispolzovanie-dvuh-agentov-s-raznymi-prioritetami-i-dispetchera-one_threadstrictly_ordered\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438 \u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 one_thread::strictly_ordered<\/h3>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 &quot;\u043f\u0440\u043e\u0441\u0442\u043e\u0435&quot; \u0438 &quot;\u0438\u0441\u043a\u0430\u0440\u043e\u0431\u043e\u0447\u043d\u043e\u0435&quot; \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0430\u0433\u0435\u043d\u0442\u0430 A \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 A_result \u0438 A_status. \u0410\u0433\u0435\u043d\u0442\u044b A_result \u0438 A_status \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u0442\u0438\u043f\u0430 one_thread::strictly_ordered. \u0410\u0433\u0435\u043d\u0442 A_result \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>msg_result<\/code>, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0430\u0433\u0435\u043d\u0442 A_status \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>msg_status<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u043d\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0432\u043b\u0430\u0434\u0435\u044e\u0442. \u0427\u0435\u0440\u0435\u0437 shared_ptr, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct A_data { ... };  class A_result final : public so_5::agent_t {    std::shared_ptr&lt;A_data&gt; m_data; public:    A_result(context_t ctx, std::shared_ptr&lt;A_data&gt; data) {...}     void so_define_agent() override {       so_subscribe(m_data-&gt;m_mbox, &amp;A_result::on_result);    }  private:    void on_result(const msg_result &amp; msg) {...} };  class A_status final : public so_5::agent_t {    std::shared_ptr&lt;A_data&gt; m_data; public:    A_status(context_t ctx, std::shared_ptr&lt;A_data&gt; data) {...}     void so_define_agent() override {       so_subscribe(m_data-&gt;m_mbox, &amp;A_status::on_status);    }  private:    void on_status(const msg_status &amp; msg) {...} };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438 A_result \u0438 A_status \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 one_thread::strictly_ordered \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u043e \u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0431\u044b \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u044c \u0438 \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c. \u042d\u0442\u0430 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e \u0438 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<h3 id=\"sobstvennyy-dispetcher-s-prioritetami-dlya-soobscheniy\">\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h3>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432-\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0411\u043b\u0430\u0433\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0438 \u0441\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0442\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u043e\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0440\u0430\u0437\u043d\u043e\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438: \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u043c\u044b \u0438 \u043f\u043e\u0439\u0434\u0435\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"chto-imenno-my-popytaemsya-sdelat\">\u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c?<\/h1>\n<p>  <\/p>\n<p>\u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0448\u0438\u0440\u0435 (\u043a\u0430\u043a \u044d\u0442\u043e \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0449\u0443\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0433\u0440\u0443\u0431\u043e\u0439 \u0441\u0438\u043b\u044b).<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440. \u041a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0438\u0445 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b?<\/p>\n<p>  <\/p>\n<p>\u0410 \u044d\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  <\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u0438\u043f\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u044d\u0442\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 compile-time. \u0421\u043a\u0430\u0436\u0435\u043c, \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0443 <code>msg_result<\/code> \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430, \u0430 \u0443 <code>msg_status<\/code> \u2014 \u043d\u043e\u043b\u0438\u043a.<\/p>\n<p>  <\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0442\u0438\u043f\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0430\u0433\u0435\u043d\u0442\u0430-\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f. \u0421\u043a\u0430\u0436\u0435\u043c, \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 A \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>msg_result<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1, \u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>msg_status<\/code> \u2014 0. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 L \u043e\u0431\u0430 \u044d\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 0.<\/p>\n<p>  <\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b. \u0421\u043a\u0430\u0436\u0435\u043c \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 mbox_A \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 mbox_B.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0433\u0434\u0435-\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0435\u0449\u0435 \u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0422.\u043a. <code>msg_result<\/code> \u0438\u0437 mbox_A \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 2, <code>msg_status<\/code> \u0438\u0437 mbox_A \u2014 1, <code>msg_result<\/code> \u0438\u0437 mbox_B \u2014 1, <code>msg_status<\/code> \u0438\u0437 mbox_B \u2014 0.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u043b\u0438 \u044d\u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440?<\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0443\u0435\u0442 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <em>priority_detector<\/em> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f: \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0437\u0430\u044f\u0432\u043a\u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u0435\u0440\u0433\u0430\u0435\u0442 <em>priority_detector<\/em> \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0437\u0430\u044f\u0432\u043a\u0443 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e <em>priority_detector<\/em>-\u043e\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0423\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0439\u0442\u0438 \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0442\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443. \u0421\u043a\u0430\u0436\u0435\u043c, \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0430\u0433\u0435\u043d\u0442\u044b Alice \u0438 Bob \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0438\u0442\u0438, \u0437\u043d\u0430\u0447\u0438\u0442 \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e. \u041d\u0435 \u0441\u0443\u0442\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u0447\u0435\u043c: \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c Alice \u0438 Bob \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u043e\u0431\u0449\u0438\u043c\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c Alice \u0438 Bob \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443, \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u043c\u0435\u0442\u044c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435, \u0447\u0442\u043e Alice \u0438 Bob \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u0449\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u043d\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043e Alice \u0438 Bob \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0421\u043a\u0430\u0436\u0435\u043c, \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Alice \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0438\u0445 \u0442\u0438\u043f\u0430. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f Bob-\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438 \u043e\u0442 \u0442\u0438\u043f\u0430, \u0438 \u043e\u0442 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0439\u0442\u0438, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0443\u0442\u044c<\/strong>. \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e. \u0410 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0439 <em>priority_detector<\/em>-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, Alice \u0438\u043b\u0438 Bob, \u0437\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0435\u0433\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443.<\/p>\n<p>  <\/p>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0442\u044c<\/strong>. \u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c? \u0418 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <em>priority_detector<\/em> \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438? \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043a \u043e\u0434\u043d\u043e\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435, \u0430 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0443\u0442\u0435\u043c. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0412\u0435\u0434\u044c \u0435\u0441\u043b\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c\u0438, \u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 (\u0438\u043b\u0438 \u0441\u0430\u043c\u044b\u0445 \u043d\u043e\u0432\u044b\u0445) \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u044f\u0432\u043a\u0438 \u0432 \u0443\u0436\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0418\u043b\u0438 \u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f: \u0441\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043e\u043b\u044c\u0448\u0435 250ms, \u0442\u043e \u043e\u043d\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430.<\/p>\n<p>  <\/p>\n<h1 id=\"demo-proekt-so5_custom_queue_disps\">\u0414\u0435\u043c\u043e \u043f\u0440\u043e\u0435\u043a\u0442 so5_custom_queue_disps<\/h1>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 GitHub-\u0435 \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u0435\u043c\u043e-\u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\" rel=\"nofollow\">so5_custom_queue_disps<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u043d\u0438\u0436\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u2014 one_thread, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043a \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0438\u0442\u0438. \u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0442\u043e \u0442\u0443\u0434\u0430 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 thread_pool \u0438\/\u0438\u043b\u0438 adv_thread_pool \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432. \u0414\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u041d\u0443 \u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"obschaya-ideya-spisok-iz-nepustyh-ocheredey\">\u041e\u0431\u0449\u0430\u044f \u0438\u0434\u0435\u044f: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439<\/h2>\n<p>  <\/p>\n<p>\u0418\u0434\u0435\u044f, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 so5_custom_queue_disps, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c N \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0437\u0430\u044f\u0432\u043e\u043a. \u0412 \u043f\u0440\u0435\u0434\u0435\u043b\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a. \u042d\u0442\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0436\u0438\u0432\u0443\u0442 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043a\u0442\u043e-\u0442\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0442\u0430\u043b\u0430 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043e\u043d\u0430 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0443 \u0441\u0435\u0431\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u0441\u0442, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u043f\u0443\u0441\u0442\u044b. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0437\u0430\u044f\u0432\u043a\u0430, \u044d\u0442\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043f\u0438\u0442 \u043f\u043e\u043a\u0430 \u0432 \u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043e\u043a, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0438\u0437\u044b\u043c\u0430\u0435\u0442 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0437\u0430\u044f\u0432\u043a\u0443 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u044f\u0432\u043a\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e \u044d\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0447\u0442\u043e-\u0442\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0443 \u043e\u0447\u0435\u043d\u044c \u0432 \u0441\u0432\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0432 \u0441\u0430\u043c\u044b\u0439 \u0435\u0433\u043e \u043a\u043e\u043d\u0435\u0446.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u044f\u0432\u043a\u0438. \u0410 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a: \u0435\u0441\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435 \u043f\u0443\u0441\u0442, \u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u043f\u0443\u0441\u0442, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2o\/we\/wv\/2owewvq0arjhtqhp_ntzvvsiisw.png\"><\/p>\n<p>  <\/p>\n<h3 id=\"neskolko-agentov-s-odnoy-ocheredyu-zayavok-i-fifo-dlya-agentov\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0437\u0430\u044f\u0432\u043e\u043a \u0438 FIFO \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0432 so5_custom_queue_disps \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0437\u0430\u044f\u0432\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0441\u043a\u0430\u0436\u0435\u043c, \u0443 \u043d\u0438\u0445 \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b).<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043c\u043e\u0436\u043d\u043e \u043a one_thread \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0438 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u043d\u043e \u0437\u0430\u044f\u0432\u043a\u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u044b \u0441 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c FIFO \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a. \u0411\u0435\u0437 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432, \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u0431\u0435\u0437 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u044b Alice \u0438 Bob \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u043e\u0431\u0449\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0418 \u043c\u044b \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 M1 \u0430\u0433\u0435\u043d\u0442\u0443 Alice, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 M2 \u0430\u0433\u0435\u043d\u0442\u0443 Bob. \u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435: \u0441\u043f\u0435\u0440\u0432\u0430 M1, \u0437\u0430\u0442\u0435\u043c M2.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442\u044b Alice \u0438 Bob \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a, \u0442\u043e \u043f\u0440\u0438 \u043e\u0442\u0441\u044b\u043b\u043a\u0435 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 M1 \u0430\u0433\u0435\u043d\u0442\u0443 Alice, \u0430 \u0437\u0430\u0442\u0435\u043c M2 \u0430\u0433\u0435\u043d\u0442\u0443 Bob, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c. \u042d\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438 \u043e\u0442 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0437\u0430\u044f\u0432\u043e\u043a \u0441\u0430\u043c\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438 \u0442\u0430\u043a, \u0447\u0442\u043e M2 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u043c Bob \u0435\u0449\u0435 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a M1 \u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043e Alice.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"kak-opisannyy-vyshe-podhod-vyglyadit-dlya-polzovatelya-na-praktike\">\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435?<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 custom_queue_disps::one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0432 \u043a\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">so_5::launch( [](so_5::environment_t &amp; env) {    env.introduce_coop( [](so_5::coop_t &amp; coop) {       \/\/ (1)       auto queue = std::make_shared&lt;dynamic_per_agent_priorities_t&gt;();        \/\/ (2)       auto binder = custom_queue_disps::one_thread::make_dispatcher(             coop.environment() ).binder( queue );        \/\/ (3)       auto * alice = coop.make_agent_with_binder&lt;demo_agent_t&gt;(             binder, &quot;Alice&quot; );       auto * bob = coop.make_agent_with_binder&lt;demo_agent_t&gt;(             binder, &quot;Bob&quot; );        \/\/ (4)       queue-&gt;define_priority( alice,             typeid(demo_agent_t::hello),             dynamic_per_agent_priorities_t::low );       queue-&gt;define_priority( alice,             typeid(demo_agent_t::bye),             dynamic_per_agent_priorities_t::high );        queue-&gt;define_priority( bob,             typeid(demo_agent_t::hello),             dynamic_per_agent_priorities_t::high );       queue-&gt;define_priority( bob,             typeid(demo_agent_t::bye),             dynamic_per_agent_priorities_t::low );    } ); } );<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432 \u0442\u043e\u0447\u043a\u0435 (1) \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f (\u043a\u043b\u0430\u0441\u0441 <code>dynamic_per_agent_priorities_t<\/code> \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u0436\u0435).<\/p>\n<p>  <\/p>\n<p>\u0412 \u0442\u043e\u0447\u043a\u0435 (2) \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430;<\/li>\n<li>\u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 <em>disp_binder<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043a \u044d\u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443. \u042d\u0442\u043e\u0442 <em>disp_binder<\/em> \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443, \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0432 \u0442\u043e\u0447\u043a\u0435 (1).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0442\u043e\u0447\u043a\u0435 (3) \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0443\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u0442\u043e\u0447\u043a\u0435 (2).<\/p>\n<p>  <\/p>\n<p>\u0412 \u0442\u043e\u0447\u043a\u0435 (4) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438 Alice \u0438 Bob. \u041c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0432 \u0440\u0430\u0437\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438. \u0410 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  <\/p>\n<h1 id=\"nekotorye-poyasneniya-kasatelno-detaley-realizacii-so5_custom_queue_disps\">\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 so5_custom_queue_disps<\/h1>\n<p>  <\/p>\n<h2 id=\"bazovyy-klass-demand_queue_t-i-ego-nasledniki\">\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 demand_queue_t \u0438 \u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c\u0438. \u0418, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u0434\u0441\u0443\u043d\u0443\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 demand_queue_t.<\/p>\n<p>  <\/p>\n<h3 id=\"publichnaya-chast-demand_queue_t\">\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c demand_queue_t<\/h3>\n<p>  <\/p>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c <a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/e2d5536b7bd63ff629b7e77f701aef218e5aaa72\/dev\/custom_queue_disps\/demand_queue.hpp#L46-L83\" rel=\"nofollow\">demand_queue_t<\/a> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">      [[nodiscard]]       virtual bool       empty() const noexcept = 0;        [[nodiscard]]       virtual std::optional&lt;so_5::execution_demand_t&gt;       try_extract() noexcept = 0;        virtual void       push( so_5::execution_demand_t demand ) = 0;<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441 \u044d\u0442\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0437\u0430\u044f\u0432\u043e\u043a \u0441\u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0441\u043c\u044b\u0441\u043b \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>empty()<\/code> \u0438 <code>push()<\/code> \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0438\u0445 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443 (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445). \u0410 \u0432\u043e\u0442 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 <code>std::optional<\/code> \u0438\u0437 <code>try_extract()<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435 \u043f\u0443\u0441\u0442\u0430, \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 <code>extract()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u0437\u0430\u044f\u0432\u043a\u0443 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 (\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b\/\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f <code>execution_demand_t<\/code> \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c <code>extract()<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u0440\u044b <code>front()<\/code>+<code>pop()<\/code>).<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0442\u0435\u0440\u044f\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u0421\u043a\u0430\u0436\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0430\u043b\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432\u043e\u0437\u0432\u0440\u0430\u0442 <code>std::optional<\/code> \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0435\u0441\u043b\u0438 <code>empty()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 false, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>try_extract()<\/code>;<\/li>\n<li><code>try_extract()<\/code> \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 <code>std::optional<\/code> \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0431\u044b\u043b\u0430 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439. \u042d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u044f\u0432\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"thread-safety-dlya-demand_queue_t\">thread-safety \u0434\u043b\u044f demand_queue_t<\/h3>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b <code>empty\/try_extract\/push<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c mutex-\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445, \u0442\u043e \u043e\u0431 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0438 thread-safety \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u0441\u044f, \u043e\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 <code>empty\/try_extract\/push<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 thread-safety \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043a\u043b\u0430\u0441\u0441\u0435 <code>dynamic_per_agent_priorities_t<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"specialnye-prioritety-dlya-zayavok-evt_start-i-evt_finish\">\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0434\u043b\u044f \u0437\u0430\u044f\u0432\u043e\u043a evt_start \u0438 evt_finish<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0437\u0430\u044f\u0432\u043a\u0438 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c \u0444\u0430\u043a\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0442\u0438\u043f\u043e\u0432 \u0437\u0430\u044f\u0432\u043e\u043a: evt_start \u0438 evt_finish.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u044f\u0432\u043a\u0430 evt_start \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439, \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443. \u0418\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u044f\u0432\u043a\u0435 \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>so_evt_start<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u044f\u0432\u043a\u0430 evt_finish \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u044f\u0432\u043a\u043e\u0439 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u044d\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0430\u0433\u0435\u043d\u0442\u0430. \u0418 evt_finish \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u044f\u0432\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 evt_finish \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0430\u0440\u0445\u0438\u0432\u0430\u0436\u043d\u044b\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u0434\u043b\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0430\u0433\u0435\u043d\u0442\u0430, \u0442\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043b\u044c\u0437\u044f. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0447\u0442\u0435\u043d\u043e \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c, \u0442\u043e \u0443 \u0437\u0430\u044f\u0432\u043a\u0438 evt_start \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0438\u0432\u044b\u0441\u0448\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442. \u0410 \u0443 \u0437\u0430\u044f\u0432\u043a\u0438 evt_finish \u2014 \u0441\u0430\u043c\u044b\u0439 \u043d\u0438\u0437\u043a\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u0412 SObjectizer 5.5, 5.6 \u0438 5.7 \u0437\u0430\u044f\u0432\u043a\u0438 evt_start \u0438 evt_finish \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u0435 \u043f\u043e <code>execution_demand_t::m_msg_type<\/code>, \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0437\u0430\u044f\u0432\u043e\u043a. \u0410 \u043f\u043e <code>execution_demand_t::m_demand_handler<\/code>. \u041d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 SObjectizer-5.8 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>execution_demand_t::m_msg_type<\/code>. \u041d\u043e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043f\u043b\u0430\u043d\u0430\u0445 \u0432\u0435\u0442\u043a\u0438 5.8 \u043d\u0435\u0442 \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 \u0441\u043e\u0432\u0441\u0435\u043c \ud83d\ude42<\/p>\n<p>  <\/p>\n<h3 id=\"napisanie-sobstvennogo-demand_queue_t\">\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e demand_queue_t<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/e2d5536b7bd63ff629b7e77f701aef218e5aaa72\/dev\/demo\/main.cpp#L77-L313\" rel=\"nofollow\">\u0412 so5_custom_queue_disps_demo \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a> \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0437\u0430\u044f\u0432\u043e\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u0441\u0430\u043c\u043e\u0439 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f.<\/p>\n<p>  <\/p>\n<h4 id=\"prosteyshiy-sluchay-simple_fifo_t\">\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: simple_fifo_t<\/h4>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/e2d5536b7bd63ff629b7e77f701aef218e5aaa72\/dev\/demo\/main.cpp#L77-L105\" rel=\"nofollow\">\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u0443\u044e FIFO \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class simple_fifo_t final : public custom_queue_disps::demand_queue_t    {       std::queue&lt; so_5::execution_demand_t &gt; m_queue;     public:       simple_fifo_t() = default;        [[nodiscard]]       bool       empty() const noexcept override { return m_queue.empty(); }        [[nodiscard]]       std::optional&lt;so_5::execution_demand_t&gt;       try_extract() noexcept override          {             std::optional&lt;so_5::execution_demand_t&gt; result{                std::move(m_queue.front())             };             m_queue.pop();              return result;          }        void       push( so_5::execution_demand_t demand ) override          {             m_queue.push( std::move(demand) );          }    };<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u0438\u0439 FIFO \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c, \u0442\u043e \u043d\u0430\u043c \u0437\u0434\u0435\u0441\u044c \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u044f\u0432\u043e\u043a evt_start\/evt_finish.<\/p>\n<p>  <\/p>\n<h4 id=\"naibolee-slozhnyy-sluchay-dynamic_per_agent_priorities_t\">\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: dynamic_per_agent_priorities_t<\/h4>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/20201207-001\/dev\/demo\/main.cpp#L194-L313\" rel=\"nofollow\">\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u0430\u0433\u0435\u043d\u0442\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 <code>dynamic_per_agent_priorities_t<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">using type_to_prio_map_t = std::map&lt; std::type_index, priority_t &gt;;  using agent_to_prio_map_t =             std::map&lt; so_5::agent_t *, type_to_prio_map_t &gt;;  std::mutex m_prio_map_lock;  agent_to_prio_map_t m_agent_prios;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c <code>std::mutex<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f thread-safety \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 <code>m_agent_prios<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438. \u0418, \u0434\u0430\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>std::priority_queue<\/code> \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0435 <code>so_5::execution_demand_t<\/code>, \u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct actual_demand_t    {       so_5::execution_demand_t m_demand;       priority_t m_priority;        actual_demand_t(          so_5::execution_demand_t demand,          priority_t priority )          :  m_demand{ std::move(demand) }          ,  m_priority{ priority }          {}        [[nodiscard]]       bool       operator&lt;( const actual_demand_t &amp; o ) const noexcept          {             return m_priority &lt; o.m_priority;          }    };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <code>push()<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0432\u0430\u044f \u0437\u0430\u044f\u0432\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0441\u0442\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0443, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0438\u043f \u0437\u0430\u044f\u0432\u043a\u0438, \u043a\u043e\u043c\u0443 \u043e\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">[[nodiscard]] priority_t handle_new_demand_priority( const so_5::execution_demand_t &amp; d ) noexcept    {       if( so_5::agent_t::get_demand_handler_on_start_ptr()             == d.m_demand_handler )          return highest;        if( so_5::agent_t::get_demand_handler_on_finish_ptr()             == d.m_demand_handler )          {             std::lock_guard&lt; std::mutex &gt; lock{ m_prio_map_lock };             m_agent_prios.erase( d.m_receiver );             return lowest;          }        {          std::lock_guard&lt; std::mutex &gt; lock{ m_prio_map_lock };          auto it_agent = m_agent_prios.find( d.m_receiver );          if( it_agent != m_agent_prios.end() )             {                auto it_msg = it_agent-&gt;second.find( d.m_msg_type );                if( it_msg != it_agent-&gt;second.end() )                   return it_msg-&gt;second;             }       }        return normal;    }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430\u044f\u0432\u043a\u043e\u0439 \u0442\u0438\u043f\u0430 evt_start. \u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u0435\u0439 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0432\u044b\u0441\u0448\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u044f\u0432\u043a\u0438 \u0442\u0438\u043f\u0430 evt_finish. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 evt_finish, \u0442\u043e \u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0435\u0439 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430. \u0422.\u043a. \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u044f\u0432\u043e\u043a \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u043a\u043e\u0434\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <code>handle_new_demand_priority()<\/code> \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u0445\u0432\u0430\u0442 mutex-\u0430 \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u0445. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0442.\u043a. \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f\/\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 <code>push()<\/code>, \u043d\u043e \u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <code>define_priority()<\/code> \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u0432\u0441\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void define_priority(    so_5::agent_t * receiver,    std::type_index msg_type,    priority_t priority )    {       std::lock_guard&lt; std::mutex &gt; lock{ m_prio_map_lock };        m_agent_prios[ receiver ][ msg_type ] = priority;    }  [[nodiscard]] bool empty() const noexcept override { return m_queue.empty(); }  [[nodiscard]] std::optional&lt;so_5::execution_demand_t&gt; try_extract() noexcept override    {       std::optional&lt;so_5::execution_demand_t&gt; result{          m_queue.top().m_demand       };       m_queue.pop();        return result;    }  void push( so_5::execution_demand_t demand ) override    {       const auto prio = handle_new_demand_priority( demand );       m_queue.emplace( std::move(demand), prio );    }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"privatnaya-chast-demand_queue_t\">\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c demand_queue_t<\/h3>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 demand_queue_t \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0438 &quot;\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f&quot; \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class demand_queue_t    {       demand_queue_t * m_next{ nullptr };     public:       [[nodiscard]]       demand_queue_t *       next() const noexcept { return m_next; }        void       set_next( demand_queue_t * q ) noexcept { m_next = q; }        void       drop_next() noexcept { set_next( nullptr ); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u043e\u0433 \u043f\u0440\u043e\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0432 \u0438\u043d\u0442\u0440\u0443\u0437\u0438\u0432\u043d\u044b\u0439 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<p>  <\/p>\n<h2 id=\"dispatcher_handle-chto-eto-i-zachem\">dispatcher_handle. \u0427\u0442\u043e \u044d\u0442\u043e \u0438 \u0437\u0430\u0447\u0435\u043c?<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443. \u0418 \u043f\u0435\u0440\u0432\u043e\u0435, \u0441 \u0447\u0435\u043c \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f, \u0442\u0430\u043a \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 SObjectizer 5.6 \u0438 5.7 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044f\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0432 SObjectizer 5.5 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u0422.\u0435. \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e \u0438 \u0432 \u0432\u0438\u0434\u0435 \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e (\u0432 SO-5.5 \u0436\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/eao197\/so-5-5\/blob\/master\/dev\/so_5\/rt\/h\/disp.hpp#L41\" rel=\"nofollow\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 dispatcher_t<\/a>).<\/p>\n<p>  <\/p>\n<p>\u0412 SO-5.6\/5.7 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430\u043c\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0434\u0432\u0443\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439: dispatcher_handle \u0438 disp_binder. \u041f\u0440\u0438 disp_binder \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043d\u0438\u0436\u0435, \u0430 \u043f\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c dispatcher_handle.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0432 SO-5.6\/5.7 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f-\u0444\u0430\u0431\u0440\u0438\u043a\u0430 <code>make_dispatcher()<\/code>. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0447\u0442\u043e-\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c, \u043d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c SObjectizer-\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e C++\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430?<\/p>\n<p>  <\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043d\u0435\u043a\u0438\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\/\u0445\u044d\u043d\u0434\u043b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>dispatcher_handle<\/em>.<\/p>\n<p>  <\/p>\n<p>Dispatcher_handle \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a shared_ptr \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0442\u0438\u043f\u0430. \u0418 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c dispatcher_handle \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a shared_ptr: \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 dispatcher_handle, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430, \u044d\u0442\u043e\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0443 dispacher_handle \u0435\u0441\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>binder()<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 disp_binder-\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 dispatcher_handle \u0435\u0441\u0442\u044c \u0438 <a href=\"https:\/\/github.com\/Stiffstream\/so5extra\/blob\/e03e025b08921c76a650656019a04cf7500620be\/dev\/so_5_extra\/disp\/asio_thread_pool\/pub.hpp#L339-L344\" rel=\"nofollow\">\u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430<\/a>. \u041d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e <code>binder()<\/code> \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0445 dispatcher_handle \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 shared_ptr.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443 dispatcher_handler \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">namespace impl {  class dispatcher_t;  using dispatcher_shptr_t = std::shared_ptr&lt; dispatcher_t &gt;;  class dispatcher_handle_maker_t;  } \/* namespace impl *\/  class [[nodiscard]] dispatcher_handle_t    {       friend class impl::dispatcher_handle_maker_t;        impl::dispatcher_shptr_t m_disp;        dispatcher_handle_t( impl::dispatcher_shptr_t disp );        [[nodiscard]]       bool       empty() const noexcept;     public :       dispatcher_handle_t() noexcept = default;        [[nodiscard]]       so_5::disp_binder_shptr_t       binder( demand_queue_shptr_t demand_queue ) const;        [[nodiscard]]       operator bool() const noexcept { return !empty(); }        [[nodiscard]]       bool       operator!() const noexcept { return empty(); }        void       reset() noexcept;    };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f-\u0444\u0430\u0431\u0440\u0438\u043a\u0430 <code>make_dispatcher()<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 dispatcher_handler \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"disp_binder-chto-eto-i-chto-nam-nuzhno-ot-disp_binder-dlya-one_thread-dispetchera\">disp_binder. \u0427\u0442\u043e \u044d\u0442\u043e \u0438 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442 disp_binder \u0434\u043b\u044f one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430?<\/h2>\n<p>  <\/p>\n<p>\u0412\u044b\u0448\u0435 \u043c\u044b \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u00ab\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430\u043c\u00bb. \u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0432 \u0434\u0435\u043b\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c disp_binder-\u044b. \u041e\u043d\u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0430\u0433\u0435\u043d\u0442\u043e\u043c. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u044f\u0437\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0442 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043f\u0440\u0438 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n-\/3q\/im\/n-3qimbqtukc7kjkstyuwmsu0f4.png\"><\/p>\n<p>  <\/p>\n<p>\u0412 SObjectizer \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d <a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\/blob\/0f261d1f2352d56854bf940dabdd9a4ad527be24\/dev\/so_5\/disp_binder.hpp#L30\" rel=\"nofollow\">\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 disp_binder-\u044b. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 disp_binder-\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430. \u0418 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 disp_binder-\u044b.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 5.6 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u044d\u0442\u043e\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class disp_binder_t    : private std::enable_shared_from_this&lt; disp_binder_t &gt; {    public:       disp_binder_t() = default;       virtual ~disp_binder_t() noexcept = default;        virtual void       preallocate_resources( agent_t &amp; agent ) = 0;        virtual void       undo_preallocation( agent_t &amp; agent ) noexcept = 0;        virtual void       bind( agent_t &amp; agent ) noexcept = 0;        virtual void       unbind( agent_t &amp; agent ) noexcept = 0; };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0440\u0438 \u043f\u0435\u0440\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430, <code>preallocate_resources()<\/code>, <code>undo_preallocation()<\/code> \u0438 <code>bind()<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0435 \u0430\u0433\u0435\u043d\u0442\u0430 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443.<\/p>\n<p>  <\/p>\n<p>\u0418\u0445 \u0442\u0440\u0438 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u2014 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 SObjectizer \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u0430\u043d\u0435\u0440\u0435. \u0422.\u0435. \u043b\u0438\u0431\u043e \u0432\u0441\u0435 \u0430\u0433\u0435\u043d\u0442\u044b \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u043b\u0438\u0431\u043e \u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445. \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0434\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 SObjectizer \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043d\u043e\u0432\u044b\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0438\u0442\u0438. \u041a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0443 disp_binder-\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>preallocate_resources()<\/code>. \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 disp_binder \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 SObjectizer (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e\u0432\u0430\u044f \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043d\u0438\u0442\u044c, \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a \u0438 \u0442.\u0434.). \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0442\u043e disp_binder \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0443 \u0441\u0435\u0431\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0437\u043e\u0432\u0443\u0442 \u043c\u0435\u0442\u043e\u0434 <code>bind()<\/code> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0430\u0433\u0435\u043d\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043d\u0438\u0442\u044c. \u0418\u043b\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c. \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <code>undo_preallocation()<\/code>. \u0415\u0441\u043b\u0438 \u0443 disp_binder-\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>undo_preallocation()<\/code>, \u0442\u043e disp_binder \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 <code>preallocate_resources()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u0442\u0430\u0434\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0434\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430\u043c. \u0418 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0443 disp_binder-\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>bind()<\/code>. \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 disp_binder \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u0435\u0442\u043e\u0434 <code>so_bind_to_dispatcher()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>bind()<\/code> \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a noexcept, \u0442.\u043a. \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 SObjectizer \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 (\u0430 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442, \u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f).<\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>unbind()<\/code>, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 evt_finish). \u0422\u0430\u043a \u0447\u0442\u043e \u0432 <code>unbind()<\/code> disp_binder \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u0432 <code>preallocate_resources()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0432\u0430\u0442\u043e. \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f disp_binder-\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class actual_disp_binder_t final : public so_5::disp_binder_t    {       actual_event_queue_t m_event_queue;     public:       actual_disp_binder_t(          demand_queue_shptr_t demand_queue,          dispatcher_data_shptr_t disp_data ) noexcept          :  m_event_queue{ std::move(demand_queue), std::move(disp_data) }          {}        void       preallocate_resources(          so_5::agent_t &amp; \/*agent*\/ ) override          {}        void       undo_preallocation(          so_5::agent_t &amp; \/*agent*\/ ) noexcept override          {}        void       bind(          so_5::agent_t &amp; agent ) noexcept override          {             agent.so_bind_to_dispatcher( m_event_queue );          }        void       unbind(          so_5::agent_t &amp; \/*agent*\/ ) noexcept override          {}    };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 disp_binder \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>so_bind_to_dispatcher()<\/code>. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0422.\u043a. \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u2014 \u044d\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>actual_event_queue_t<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 disp_binder-\u043e\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"one_thread-dispetcher\">one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0430\u043c\u0438 one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0447\u0430\u0441\u0442\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>dispatcher_data_t<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct dispatcher_data_t    {       std::mutex m_lock;       std::condition_variable m_wakeup_cv;        bool m_shutdown{ false };        demand_queue_t * m_head{ nullptr };       demand_queue_t * m_tail{ nullptr };    };  using dispatcher_data_shptr_t =       std::shared_ptr&lt; dispatcher_data_t &gt;;<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 <em>event_queue<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u0438 \u0437\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u043f\u0443\u0441\u0442\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u044f\u0432\u043e\u043a \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u2014 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\/blob\/0f261d1f2352d56854bf940dabdd9a4ad527be24\/dev\/so_5\/event_queue.hpp#L26\" rel=\"nofollow\"><code>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 event_queue_t<\/code><\/a> \u0434\u043b\u044f one_thread-\u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class actual_event_queue_t final : public so_5::event_queue_t    {       demand_queue_shptr_t m_demand_queue;       dispatcher_data_shptr_t m_disp_data;     public:       actual_event_queue_t(          demand_queue_shptr_t demand_queue,          dispatcher_data_shptr_t disp_data ) noexcept          :  m_demand_queue{ std::move(demand_queue) }          ,  m_disp_data{ std::move(disp_data) }          {}        void       push( so_5::execution_demand_t demand ) override          {             std::lock_guard&lt; std::mutex &gt; lock{ m_disp_data-&gt;m_lock };              auto &amp; q = *m_demand_queue;             const bool queue_was_empty = q.empty();             q.push( std::move(demand) );              if( queue_was_empty )                {                   \/\/ \u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e.                   [&amp;]() noexcept {                      const bool disp_was_sleeping =                            (nullptr == m_disp_data-&gt;m_head);                       if( disp_was_sleeping )                         {                            m_disp_data-&gt;m_head = m_disp_data-&gt;m_tail = &amp;q;                             m_disp_data-&gt;m_wakeup_cv.notify_one();                         }                      else                         {                            m_disp_data-&gt;m_tail-&gt;set_next( &amp;q );                            m_disp_data-&gt;m_tail = &amp;q;                         }                   }();                }          }    };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0442\u0430\u043a\u043e\u0439 <em>event_queue<\/em> \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 disp_binder-\u0430.<\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 <code>actual_event_queue_t<\/code> \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u0443\u043c\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u041e\u0434\u0438\u043d \u043d\u0430 <em>demand_queue<\/em>, \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>dispatcher_data_t<\/code>. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u044d\u0442\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0422.\u0435. \u0438 <em>demand_queue<\/em>, \u0438 <code>dispatcher_data_t<\/code> \u0436\u0438\u0432\u0443\u0442 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d <code>actual_event_queue_t<\/code>. \u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <code>actual_event_queue_t<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e disp_binder-\u0430, \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 <em>demand_queue<\/em> \u0438 <code>dispatcher_data_t<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0436\u0438\u0437\u043d\u0438 disp_binder-\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 disp_binder-\u0443 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442, \u043f\u0440\u043e\u043f\u0430\u0434\u0435\u0442 \u0438 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 <em>demand_queue<\/em> \u0438 <code>dispatcher_data_t<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0422\u0440\u0435\u0442\u044c\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u2014 \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e <code>dispatcher_t<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043d\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u044f\u0432\u043e\u043a. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 <code>dispatcher_t<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c <a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/e2d5536b7bd63ff629b7e77f701aef218e5aaa72\/dev\/custom_queue_disps\/one_thread.cpp#L165-L295\" rel=\"nofollow\">\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u0438\u0448\u044c \u043d\u0430 \u0434\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0438\u0442\u0438 \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u0438\u0437 \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u0445 <em>demand_queue<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class dispatcher_t final    :  public std::enable_shared_from_this&lt; dispatcher_t &gt;    {       dispatcher_data_t m_disp_data;        std::thread m_worker_thread;        void       thread_body() noexcept          {             const auto thread_id = so_5::query_current_thread_id();             bool shutdown_initiated{ false };             while( !shutdown_initiated )                {                   std::unique_lock&lt; std::mutex &gt; lock{ m_disp_data.m_lock };                   shutdown_initiated = try_extract_and_execute_one_demand(                         thread_id,                         std::move(lock) );                }          }        [[nodiscard]]       bool       try_extract_and_execute_one_demand(          so_5::current_thread_id_t thread_id,          std::unique_lock&lt; std::mutex &gt; unique_lock ) noexcept          {             do                {                   auto [demand, has_non_empty_queues] =                         try_extract_demand_to_execute();                   if( demand )                      {                         unique_lock.unlock();                         demand-&gt;call_handler( thread_id );                          break;                      }                   else if( !has_non_empty_queues )                      {                         m_disp_data.m_wakeup_cv.wait( unique_lock );                      }                }             while( !m_disp_data.m_shutdown );              return m_disp_data.m_shutdown;          }        [[nodiscard]]       std::tuple&lt; std::optional&lt; so_5::execution_demand_t &gt;, bool &gt;       try_extract_demand_to_execute() noexcept          {             std::optional&lt; so_5::execution_demand_t &gt; result;              bool has_non_empty_queues{ false };              if( !m_disp_data.m_head )                return { result, has_non_empty_queues };              auto * dq = m_disp_data.m_head;             m_disp_data.m_head = dq-&gt;next();             dq-&gt;drop_next();              if( !m_disp_data.m_head )                m_disp_data.m_tail = nullptr;             else                has_non_empty_queues = true;              result = dq-&gt;try_extract();              if( !dq-&gt;empty() )                {                   if( m_disp_data.m_tail )                      m_disp_data.m_tail-&gt;set_next( dq );                   else                      m_disp_data.m_head = m_disp_data.m_tail = dq;                }              return { result, has_non_empty_queues };          }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 make_disp_binder:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">[[nodiscard]] so_5::disp_binder_shptr_t make_disp_binder(    demand_queue_shptr_t demand_queue )    {       return std::make_shared&lt; actual_disp_binder_t &gt;(             std::move(demand_queue),             dispatcher_data_shptr_t{ shared_from_this(), &amp;m_disp_data } );    }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u2014 \u044d\u0442\u043e \u0444\u0430\u043a\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>dispatcher_data_t<\/code> \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 <code>dispatcher_t<\/code> \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041d\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>make_disp_binder<\/code> \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>actual_disp_binder_t<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f <code>shared_ptr&lt;dispatcher_data_t&gt;<\/code>. \u0422\u0443\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u044e\u043a c <em>aliasing constructor<\/em> \u0434\u043b\u044f <code>std::shared_ptr<\/code>: \u0445\u0440\u0430\u043d\u0438\u0442\u044c shared_ptr \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 T, \u043d\u043e \u0432\u043e\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Y. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043e\u0442 <code>dispatcher_t<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u0432\u0441\u0435. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e <code>dispatcher_handler<\/code> \u0438 <code>make_dispatcher<\/code>, \u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/github.com\/Stiffstream\/so5_custom_queue_disps_demo\/blob\/e2d5536b7bd63ff629b7e77f701aef218e5aaa72\/dev\/custom_queue_disps\/one_thread.cpp#L300-L352\" rel=\"nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<h1 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u0432\u0435 \u0446\u0435\u043b\u0438:<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0445\u043e\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c SObjectizer-\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0435\u0442, \u043d\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b SObjectizer \u0438\u043b\u0438 \u0436\u0435 \u043f\u0440\u0438\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0441\u044f \u043a SObjectizer-\u0443, \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u0442\u043e \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/Stiffstream\/so5extra\" rel=\"nofollow\">so5extra<\/a>. \u0418\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 \u0441\u0430\u043c SObjectizer. \u041c\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0430.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442 (\u0441\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432 SObjectizer-\u0435 \u043f\u0440\u044f\u043c\u043e &quot;\u0438\u0441\u043a\u0430\u0440\u043e\u043f\u043a\u0438&quot;), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0441\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u043b\u0443\u0448\u0430\u0435\u043c\u0441\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"kstati-sobjectizer-5-uzhe-10-let\">\u041a\u0441\u0442\u0430\u0442\u0438, SObjectizer-5 \u0443\u0436\u0435 10 \u043b\u0435\u0442<\/h1>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 SObjectizer-5 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043e\u0441\u0435\u043d\u044c\u044e 2010-\u0433\u043e \u0433\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440. \u0420\u0430\u0434\u0443\u0435\u0442 \u0438 \u0443\u0434\u0438\u0432\u043b\u044f\u0435\u0442. \u0410 \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0442\u043e \u043b\u0438\u0447\u043d\u043e \u044f \u0434\u0443\u043c\u0430\u044e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c <a href=\"https:\/\/eao197.blogspot.com\/2020\/12\/progc-sobjectizer-5.html\" rel=\"nofollow\">\u0441\u044e\u0434\u0430<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u043d\u044f \u043f\u043e\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0431\u0435\u0440\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430\u0448 SObjectizer \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0438\u0437 \u0431\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u043a\u0438 \u0438 \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439 SObjectizer-\u0430 \u043d\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0441 \u0433\u0440\u043e\u043c\u043a\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0438 \u0442\u043e\u043b\u0441\u0442\u044b\u043c\u0438 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430\u043c\u0438. \u0412\u043e\u0442 \u044d\u0442\u043e \u0443\u0434\u0438\u0432\u043b\u044f\u0435\u0442 \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443. \u0410 \u0435\u0449\u0435 \u0432\u0441\u0435\u043b\u044f\u0435\u0442 \u0432 \u043d\u0430\u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0435 \u0437\u0440\u044f. \u0422\u0430\u043a \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0440\u0438\u0441\u043a\u043d\u0443\u043b \u0438 \u0432\u044b\u0431\u0440\u0430\u043b SObjectizer. \u0415\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u0432\u044b, \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u044e\u0431\u0438\u043b\u0435\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/531566\/\"> https:\/\/habr.com\/ru\/post\/531566\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/t4\/lu\/d6\/t4lud6njzta_ywy9qwxpx20bycy.jpeg\"><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\" rel=\"nofollow\">SObjectizer<\/a> \u2014 \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f C++, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043a\u0430\u043a Actor Model, Communicating Sequential Processes \u0438 Publish\/Subscribe.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0432 SObjectizer \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b. \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u0430\u043a\u0442\u043e\u0440\u044b (\u0430\u0433\u0435\u043d\u0442\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 SObjectizer-\u0430) \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u044b \u0432 SObjectizer \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u043c\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432 \u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0414\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 <a href=\"https:\/\/habr.com\/ru\/post\/353712\/\">\u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c<\/a> \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0434\u043b\u044f SObjectizer-\u0430 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f SObjectizer \u0443\u0441\u043f\u0435\u043b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0440\u0432\u0430 \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 5.6, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438 5.7. \u0418 \u0432 \u044d\u0442\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 <a href=\"https:\/\/github.com\/Stiffstream\/sobjectizer\/wiki\/v.5.6.0\" rel=\"nofollow\">\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0439<\/a> \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 5.5, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0432 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<h1 id=\"o-reshaemoy-zadache-v-dvuh-slovah\">\u041e \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445<\/h1>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0432\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f: <code>msg_result<\/code> \u0441 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u043e\u0439 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 <code>msg_status<\/code> \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <code>msg_status<\/code> \u043c\u043e\u0433\u0443\u0442 \u0438\u0434\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043e\u0434\u043d\u043e <code>msg_result<\/code> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043e 1000 <code>msg_status<\/code>. \u0418 \u043d\u0430\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0443\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 900 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 <code>msg_status<\/code> \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>msg_result<\/code> \u0432\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043d\u0435 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0430 \u0432 \u0441\u0430\u043c\u043e\u0435 \u0435\u0435 \u043d\u0430\u0447\u0430\u043b\u043e. \u0427\u0442\u043e\u0431\u044b <code>msg_result<\/code> \u043d\u0435 \u0436\u0434\u0430\u043b\u043e \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u0433\u0440\u0435\u0431\u0443\u0442\u0441\u044f 900 \u0441\u0442\u0430\u0440\u044b\u0445 <code>msg_status<\/code>.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-314422","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314422"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314422\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}