MCPcopy Create free account
hub / github.com/OSGeo/gdal / CPLVirtualMemUnDeclareThread

Function CPLVirtualMemUnDeclareThread

port/cpl_virtualmem.cpp:557–580  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

555/************************************************************************/
556
557void CPLVirtualMemUnDeclareThread(CPLVirtualMem *ctxt)
558{
559 if (ctxt->eType == VIRTUAL_MEM_TYPE_FILE_MEMORY_MAPPED)
560 return;
561#ifndef HAVE_5ARGS_MREMAP
562 CPLVirtualMemVMA *ctxtVMA = reinterpret_cast<CPLVirtualMemVMA *>(ctxt);
563 pthread_t self = pthread_self();
564 IGNORE_OR_ASSERT_IN_DEBUG(!ctxt->bSingleThreadUsage);
565 CPLAcquireMutex(ctxtVMA->hMutexThreadArray, 1000.0);
566 for (int i = 0; i < ctxtVMA->nThreads; i++)
567 {
568 if (ctxtVMA->pahThreads[i] == self)
569 {
570 if (i < ctxtVMA->nThreads - 1)
571 memmove(ctxtVMA->pahThreads + i + 1, ctxtVMA->pahThreads + i,
572 (ctxtVMA->nThreads - 1 - i) * sizeof(pthread_t));
573 ctxtVMA->nThreads--;
574 break;
575 }
576 }
577
578 CPLReleaseMutex(ctxtVMA->hMutexThreadArray);
579#endif
580}
581
582/************************************************************************/
583/* CPLVirtualMemGetPageToFill() */

Callers 2

test_two_pages_threadFunction · 0.85
test_two_pagesFunction · 0.85

Calls 2

CPLAcquireMutexFunction · 0.85
CPLReleaseMutexFunction · 0.85

Tested by 2

test_two_pages_threadFunction · 0.68
test_two_pagesFunction · 0.68