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