Difference between revisions of "Sead/Locks"
Jump to navigation
Jump to search
Shibboleet (talk | contribs) m |
Shibboleet (talk | contribs) m (Better wording for what a critical section is.) |
||
Line 2: | Line 2: | ||
==CriticalSection== | ==CriticalSection== | ||
− | ''CriticalSection'' is a class that contains a region of code that is | + | ''CriticalSection'' is a class that contains a region of code that is protected to ensure that it is executed on one thread at a time. To perform this, the class stores a mutex semaphore. It inherits from the ''IDisposer'' class. |
<syntaxhighlight lang="C++"> | <syntaxhighlight lang="C++"> |
Revision as of 23:19, 27 December 2018
Lock classes that are contained in the sead namespace are classified as classes that pertain to locking regions of memory or data to prevent accidental mishandling.
CriticalSection
CriticalSection is a class that contains a region of code that is protected to ensure that it is executed on one thread at a time. To perform this, the class stores a mutex semaphore. It inherits from the IDisposer class.
namespace sead
{
class CriticalSection : sead::IDisposer
{
public:
// default constructor. Initializes the stored mutex type.
CriticalSection();
// constructor that initializes the section disposer with a heap and initializes the stored mutex type.
CriticalSection(sead::Heap *);
// constructor that initializes the section disposer with a heap and a null option, and initializes the mutex type.
CriticalSection(sead::Heap *, sead::IDisposer::HeapNullOption);
// destructor
~CriticalSection();
// locks the section
void lock();
// attempts to lock the section, True is successful, False if failure
bool tryLock();
// unlock the section
void unlock();
nn::os::MutexType* mMutexType; // _20
};
};