| 1261 | } |
| 1262 | |
| 1263 | task_result next_result(int task_id) |
| 1264 | { |
| 1265 | while (true) |
| 1266 | { |
| 1267 | std::this_thread::sleep_for(std::chrono::microseconds(5)); |
| 1268 | std::lock_guard<std::mutex> lock(mutex_results); |
| 1269 | |
| 1270 | if (queue_results.empty()) |
| 1271 | { |
| 1272 | continue; |
| 1273 | } |
| 1274 | |
| 1275 | for (int i = 0; i < (int) queue_results.size(); i++) |
| 1276 | { |
| 1277 | if (queue_results[i].id == task_id) |
| 1278 | { |
| 1279 | task_result res = queue_results[i]; |
| 1280 | queue_results.erase(queue_results.begin() + i); |
| 1281 | return res; |
| 1282 | } |
| 1283 | } |
| 1284 | } |
| 1285 | |
| 1286 | // never reached |
| 1287 | //return task_result{-1, false, false, {}}; |
| 1288 | } |
| 1289 | |
| 1290 | // for multiple images processing |
| 1291 | bool ingest_images(llama_client_slot &slot, int n_batch) |