Читая на SQLite, я наткнулся на эту цитату в FAQ: "Потоки злые. Избегайте их."
Я очень уважаю SQLite, поэтому я не мог просто игнорировать это. Я подумал, что еще я могу, согласно политике «избегать их», использовать вместо этого, чтобы распараллелить мои задачи. Например, приложение, над которым я сейчас работаю, требует пользовательского интерфейса, который всегда отзывчив и должен время от времени опрашивать несколько сайтов (процесс, который занимает не менее 30 секунд для каждого сайта).
Итак, я открыл PDF, связанный с этим FAQ, и, по сути, кажется, что в документе предлагается несколько методов , которые должны применяться вместе с потоками, такими как барьеры или транзакционная память, - а не какие-либо методы для замены все темы.
Учитывая, что эти методы не полностью обходятся без потоков (если я не неправильно понял, что говорится в документе), я вижу два варианта: либо FAQ по SQLite действительно не буквально означает то, что говорится, либо Существуют практические подходы, которые на самом деле избегают использования потоков в целом. Есть ли?
Просто краткая заметка о тасклетах / совместном планировании в качестве альтернативы - это отлично смотрится в небольших примерах, но мне интересно, можно ли практически параллельно распараллелить приложение с большим пользовательским интерфейсом исключительно в кооперативном режиме. Если вы сделали это успешно или знаете такие примеры, это, безусловно, квалифицируется как правильный ответ!