@Erick между "берут данные" и "записывают" скрипт/поток может иметь разную длительность, поэтому то что первым успело то первым и записалось.
вместо ресурса можно использовать и др. структуры данных
@calvin да, но нужно учесть ресурсы, что бы новые 2 не брали то что уже использовалось если вам нужно каждый раз новое. Но в общем да это возможность на слабой машине запустить 50 потоков) просто по очереди.
Можно через асинхронные действия, решений масса на самом деле это самое простое (но не всегда самое лучшее). Если не знаете как.