File tree Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Original file line number Diff line number Diff line change @@ -324,11 +324,10 @@ void multiThreadedPageInBackground(const DeferredFiles &deferred) {
324
324
<< deferred.size () << " \n " ;
325
325
}
326
326
327
- static void
328
- multiThreadedPageIn ( const DeferredFiles &deferred = DeferredFiles()) {
327
+ static void multiThreadedPageIn ( const DeferredFiles &deferred) {
328
+ static std::deque< DeferredFiles *> queue;
329
329
static std::thread *running;
330
330
static std::mutex mutex;
331
- static std::deque<DeferredFiles *> queue;
332
331
333
332
mutex.lock ();
334
333
if (running && (queue.empty () || deferred.empty ())) {
@@ -341,16 +340,18 @@ multiThreadedPageIn(const DeferredFiles &deferred = DeferredFiles()) {
341
340
queue.emplace_back (new DeferredFiles (deferred));
342
341
if (!running)
343
342
running = new std::thread ([&]() {
344
- mutex.lock ();
345
- while (!queue.empty ()) {
343
+ while (true ) {
344
+ mutex.lock ();
345
+ if (queue.empty ()) {
346
+ mutex.unlock ();
347
+ return ;
348
+ }
346
349
DeferredFiles *deferred = queue.front ();
350
+ queue.pop_front ();
347
351
mutex.unlock ();
348
352
multiThreadedPageInBackground (*deferred);
349
353
delete deferred;
350
- mutex.lock ();
351
- queue.pop_front ();
352
354
}
353
- mutex.unlock ();
354
355
});
355
356
}
356
357
mutex.unlock ();
@@ -1413,8 +1414,8 @@ static void createFiles(const InputArgList &args) {
1413
1414
archive->addLazySymbols ();
1414
1415
}
1415
1416
1416
- // reap threads
1417
- // multiThreadedPageIn();
1417
+ DeferredFiles reapThreads;
1418
+ multiThreadedPageIn (reapThreads );
1418
1419
}
1419
1420
}
1420
1421
You can’t perform that action at this time.
0 commit comments