В настоящее время я использую Retlang для многопоточности на основе сообщений в .NET, которая является отличной библиотекой.У меня больше нет явных блокировок, каждый поток занимается своим делом, управляя своей частью приложения и общаясь с другими потоками посредством сообщений.
Теперь мне нужно реализовать функцию моего приложения, которая также могла быиметь собственную ветку издателя / подписчика.Единственная проблема заключается в том, что этот поток на самом деле будет выполнять очень мало работы.Ожидается, что он будет получать сообщения от издателя каждые 10 минут или около того.Когда сообщение получено, оно выполнит некоторую работу, но ничего, что должно занять более нескольких сотен миллисекунд.
Поэтому я начал задаваться вопросом, был ли на самом деле хороший выбор для спящего потока 99,9% времени.Для такого рода операций существует пул потоков, но поскольку я не могу контролировать, какой поток будут получать мои сообщения, я вынужден прибегнуть к уродливым, подверженным ошибкам блокировкам.
Мой вопрос: действительно ли этопроблема с точки зрения ресурсов, чтобы оставить поток без дела, ожидая подавляющее большинство времени?Использование общей многопоточности после использования хорошей архитектуры, основанной на сообщениях, похоже на возвращение во времени, плюс это будет единственная часть приложения с блокировками.Но я продолжаю задаваться вопросом "Я делаю что-то здесь не так?"с этой веткой.
Редактировать : спасибо всем, прочитав каждый из ваших ответов, я решил, что с другой веткой проблем не было.Мое приложение останется согласованным только с многопоточностью на основе сообщений, и если у меня действительно будет проблема с производительностью (но это не должно иметь место), я буду исследовать дальше.