You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
При чтении каждого устройства, в цикле мы отправляем устройство в заранее созданный поток для вызова в нём check и ждём результата 100мс (задаётся в конфиге), если время истекло, то оставляем его в этом потоке и переходим к следующему устройству, в списке читающих потоков ищем не занятый и если такого нет, то создаём ещё один и история повторяется, передаём на чтение и ждём недолго. В читающем потоке должен быть механизм проверки занят ли он или нет, а так же механизм прерывания задания (возможно просто из основного потока вызываем stop, ждём 50мс и прерываем поток принудительно). После обхода всех устройств, проверяем нет ли простаивающих потоков и если есть, то завершаем их (возможно если простой больше N мс), но оставляем хотя бы один. Возможно стоить выставлять устройствам рейтинг, если он один раз слишком долго читал, то помечать его и не ждать окончания чтения в следующий раз, а в потоке чтения предусмотреть callback и если вдруг он прочитается очень быстро, то тогда снимать с него эту отметку, для ожидания в следующий раз. Нужно предусмотреть блокировки, чтобы два потока не могли одновременно обратиться к одному плагину, если только функция is_multithread_call_accepted не возвращает true.
The text was updated successfully, but these errors were encountered:
При чтении каждого устройства, в цикле мы отправляем устройство в заранее созданный поток для вызова в нём check и ждём результата 100мс (задаётся в конфиге), если время истекло, то оставляем его в этом потоке и переходим к следующему устройству, в списке читающих потоков ищем не занятый и если такого нет, то создаём ещё один и история повторяется, передаём на чтение и ждём недолго. В читающем потоке должен быть механизм проверки занят ли он или нет, а так же механизм прерывания задания (возможно просто из основного потока вызываем stop, ждём 50мс и прерываем поток принудительно). После обхода всех устройств, проверяем нет ли простаивающих потоков и если есть, то завершаем их (возможно если простой больше N мс), но оставляем хотя бы один. Возможно стоить выставлять устройствам рейтинг, если он один раз слишком долго читал, то помечать его и не ждать окончания чтения в следующий раз, а в потоке чтения предусмотреть callback и если вдруг он прочитается очень быстро, то тогда снимать с него эту отметку, для ожидания в следующий раз. Нужно предусмотреть блокировки, чтобы два потока не могли одновременно обратиться к одному плагину, если только функция is_multithread_call_accepted не возвращает true.
The text was updated successfully, but these errors were encountered: