HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
UT_SharedMemoryManager.h
Go to the documentation of this file.
1
/*
2
* PROPRIETARY INFORMATION. This software is proprietary to
3
* Side Effects Software Inc., and is not to be reproduced,
4
* transmitted, or disclosed in any way without written permission.
5
*
6
* NAME: UT_SharedMemoryManager.h ( UT Library, C++)
7
*
8
* COMMENTS:
9
*
10
*/
11
12
#ifndef __UT_SharedMemoryManager__
13
#define __UT_SharedMemoryManager__
14
15
#include "
UT_API.h
"
16
17
#include "
UT_Map.h
"
18
#include "
UT_StringMap.h
"
19
#include "
UT_SpinLock.h
"
20
21
class
SYS_SharedMemory
;
22
23
class
UT_API
UT_SharedMemoryManager
24
{
25
public
:
26
static
UT_SharedMemoryManager
&
get
();
27
28
29
// Retrievs an existing memory block, or creates an empty one and marks
30
// it as being used.
31
SYS_SharedMemory
*
get
(
const
char
*key);
32
33
// Mark all shared memory blocks with keys matching the pattern as being
34
// unused. If a block is retrieved with get() it gets marked as used. Any
35
// blocks remaining unused after an operation can be erased by calling
36
// erase() with 'only_unused' set to true.
37
void
setUnused(
const
char
*
pattern
);
38
39
// Destroys all shared memory blocks with keys matching the given pattern.
40
//
41
void
erase(
const
char
*pattern,
bool
only_unused =
false
);
42
43
// Exit callback to destroy all known shared memory blocks, so they don't
44
// linger on-disk or in page file after the owning process dies.
45
static
void
exitCallback(
void
*);
46
private
:
47
UT_SharedMemoryManager
();
48
49
UT_SharedMemoryManager
(
const
UT_SharedMemoryManager
&) =
delete
;
50
UT_SharedMemoryManager
&
operator=
(
const
UT_SharedMemoryManager
&) =
delete
;
51
52
// Finds a list of keys matching the pattern. If all keys match the pattern
53
// the array is empty but the function still returns true.
54
bool
find
(
const
char
*pattern,
UT_Array<const char *>
&keys);
55
56
static
UT_SpinLock
theInstanceLock;
57
static
UT_SharedMemoryManager
*theInstance;
58
59
struct
ut_AutoSharedMemory
60
{
61
ut_AutoSharedMemory() : mySharedMemory(0), myUsed(
false
) {}
62
~ut_AutoSharedMemory();
63
64
ut_AutoSharedMemory(
const
ut_AutoSharedMemory &) =
delete
;
65
ut_AutoSharedMemory &
operator=
(
const
ut_AutoSharedMemory &) =
delete
;
66
67
SYS_SharedMemory
*mySharedMemory;
68
bool
myUsed;
69
};
70
71
typedef
UT_StringMap<ut_AutoSharedMemory>
ut_SharedMemPool
;
72
73
ut_SharedMemPool
mySharedMemPool;
74
};
75
76
#endif // __UT_SharedMemoryManager__
UT_StringMap< ut_AutoSharedMemory >
UT_API.h
UT_API
#define UT_API
Definition:
UT_API.h:14
UT_Array< const char * >
UT_SpinLockT< false, false >
UT_Map.h
pattern
GLushort pattern
Definition:
glad.h:2583
UT_SpinLock.h
nanovdb::operator=
LeafData & operator=(const LeafData &)=delete
SYS_SharedMemory
Definition:
SYS_SharedMemory.h:26
UT_StringMap.h
find
FMT_CONSTEXPR auto find(Ptr first, Ptr last, T value, Ptr &out) -> bool
Definition:
core.h:2089
UT_SharedMemoryManager
Definition:
UT_SharedMemoryManager.h:23
UT
UT_SharedMemoryManager.h
Generated on Thu Nov 21 2024 02:46:11 for HDK by
1.8.6