Heggi, У вас взаимодействие пользователя с сервисами должно идти через Gateway, а он может иметь коннект сразу и к сервису "Поиска" и сервису "Транзакций". Так что детализацию получить не проблема без дублирования.
Heggi, Сервис поиска для сложных поисковых запросов и поиск по агрегированным данным.
Пример: Сервис "пользовательских действий" (лайки, просмотры, комментарии) и сервис "статей", а посковый сервис уже просто отдает статьи из индекса, плюс содержит количество лайков, просмотров на статью. Детальная иформация остается только в сервисе "пользовательских действий" .
"еще придется продублировать и список транзакций." для чего? Пользователям реально требуются к показу эти миллионы?
"так же не решает проблему долгой начальной синхронизации" так это начальная синхроницация, она розовая и она может быть отделена на время от всей системы. И при постоянной работе больше синхронизация не нужна. И снова нужны ли тут эти миллионы транзакций?
Василий Васильков, Нет, это я не имел ввиду. У вас есть родительский элемент с ref и через него доступны все дочернии. И писать "ref={containerRef.current[index]}" не нужно
Так и какие есть что можно удалить? Для примера ps eye camera там несколько вариаций, в одной можно удалить ИК, а в другой нет и четких внешних признаков нет. Уже лотерея. ((
WSGlebKavash, Так в файле может быть содержимое, а на хосте может быть программа, что отслеживает появление файла в шаред и выполняет команды из него. Это как вариант. Возможно есть и другие
Тут обычное не понимание как правильно писать асинхронный методы. Человек пытался оставить метод с результатом Task<>, но асинхронных вызовов в его коде нет, вот и выкрутился.
Тут правильно либо делать метод без Task, либо убрать в определении слово async и отдавать в результат Task.FromResult без await
Алексей Березников, Проблема реальная. Уже на втором вызове может не отображаться лоадер в ситуации
_semaphore.WaitOne();
await Task.Delay(10);
_semaphore.Release();
так как освобождение семафора никогда не произойдет.
NikolayKhablenko, У вас вопрос "Как мгновенно завершить Task" и Task.Sleep(30) просто заблокирует поток, ему ядро не будет выделять кванты времени. И из других потоков вы не сможете в этот момент повлять.
Вместо Task.Sleep можно применить и ManualResetEvent и ждать на нем теже 30 мс. Но уже при таком решении из других потоков этот event можно перевести в сигнальное состояние и при его наличии завершить задачу.
В вашей задаче Task.Sleep(30) не сильно критично, вы просто используете поток пока не выполните задачу, но вот в ответе вам написали иной сценарий, при котором может быть запущено одновременно множество тасков в своих потоках, что приведет к проблемам производительности.
Алексей Березников, SemaphoreSlim не применяет обьекты ядра windows и его Release не проверяет каким потоком был захвачен семафор. Поэтому его и можно использовать. Все что использует обьекты ядра windows тут нежелательно, а то может возникнуть интересная ситуация в случае если код таска будет таким (как вы указали в ответе):
Алексей Березников, У вас поток Task-а будет на _semaphore.WaitOne(); заблокирован, пока захваченый семафор не будет освобожден. А так как Task-и запускаются в пуле потоков, а в .net пул потоков ограничен максимум 1000 потоков, то в определенные моменты это может привести к снижению производительности приложения, то есть в точности как и использование Thread.Sleep
Очень плохой подход помещать обьекты синхронизации, как в вашем случае Semaphore, в тело Task-а.
Также и у автора вопроса System.Threading.Thread.Sleep(30);
Иван, Вот в этом и проблема для работодателей, что все хотят развиваться за его счет на работе, а не работать..
И можете подробнее рассказать, как это заниматься семьей? Вот есть у меня семья, есть дети, есть хозяйство с животными, но что-то это не сильно много и времени занимает. Может что-то не так делаю? ))