В основном у меня есть несколько потоков, которые добавляют данные в очередь через SQLite.У меня есть еще один поток, который тянет их и обрабатывает их по одному (слишком много ресурсов, чтобы сделать несколько одновременно).Поток обработки делает это:
- извлечение данных из БД
- foreach {процесс}
- , если число == 0 {thread.suspend ()} (пробуждаетсяthread.resume ())
- повтор
мой рабочий поток выполняет:
- Проверка данных
- Вставка в БД
- вызов Queue.Poke (QueueName)
Когда я нажимаю на него, если поток приостанавливается, я .resume()
it.
Что меня беспокоит, так это процесснить видит count==0
, мой рабочий вставляет и тыкает, тогда мой процесс продолжается вниз, если и спит.Он не поймет, что в БД что-то новое.
Как мне написать это так, чтобы у меня не было состояния гонки.