OpenTTD: ThreadMutex Class Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Static Public Member Functions
ThreadMutex Class Reference

Cross-platform Mutex. More...

`#include <thread.h>`

Inheritance diagram for ThreadMutex:

## Public Member Functions
virtual | ~ThreadMutex ()
| Virtual Destructor to avoid compiler warnings.
virtual void | BeginCritical (bool allow_recursive=false)=0
| Begin the critical section.
virtual void | EndCritical (bool allow_recursive=false)=0
| End of the critical section.
virtual void | WaitForSignal ()=0
| Wait for a signal to be send.
virtual void | SendSignal ()=0
| Send a signal and wake the 'thread' that was waiting for it.

## Static Public Member Functions
static ThreadMutex * | New ()
| Create a new mutex.

## Detailed Description

Cross-platform Mutex.

Definition at line 56 of file thread.h.

## Member Function Documentation

virtual void ThreadMutex::BeginCritical | ( | bool | allow_recursive = `false` | ) |
| pure virtual

Begin the critical section.

Parameters

  allow_recursive | Whether recursive locking is intentional. If false, NOT_REACHED() will be called when the mutex is already locked by the current thread.

Implemented in ThreadMutex_pthread, ThreadMutex_Win32, ThreadMutex_OS2, and ThreadMutex_None.

Referenced by _GenerateWorld(), VideoDriver_SDL::AfterBlitterChange(), VideoDriver_Win32::AfterBlitterChange(), VideoDriver_SDL::ChangeResolution(), VideoDriver_Win32::ChangeResolution(), PacketWriter::Destroy(), DoScanNewGRFFiles(), DrawDirtyBlocks(), VideoDriver_Win32::EditBoxLostFocus(), PacketWriter::Finish(), GenerateWorld(), VideoDriver_SDL::MainLoop(), VideoDriver_Win32::MainLoop(), NetworkBackgroundUDPLoop(), NetworkGameListAddItemDelayed(), NetworkGameListHandleDelayedInsert(), NetworkUDPAdvertiseThread(), NetworkUDPClose(), NetworkUDPInitialize(), NetworkUDPQueryServer(), NetworkUDPRemoveAdvertiseThread(), openttd_main(), PacketWriter::PopPacket(), ScanNewGRFFiles(), ThreadMutexLocker::ThreadMutexLocker(), VideoDriver_SDL::ToggleFullscreen(), VideoDriver_Win32::ToggleFullscreen(), WaitTillGeneratedWorld(), PacketWriter::Write(), and PacketWriter::~PacketWriter().

virtual void ThreadMutex::EndCritical | ( | bool | allow_recursive = `false` | ) |
| pure virtual

End of the critical section.

Parameters

  allow_recursive | Whether recursive unlocking is intentional. If false, NOT_REACHED() will be called when the mutex was locked more than once by the current thread.

Implemented in ThreadMutex_pthread, ThreadMutex_Win32, ThreadMutex_OS2, and ThreadMutex_None.

Referenced by _GenerateWorld(), VideoDriver_SDL::AfterBlitterChange(), VideoDriver_Win32::AfterBlitterChange(), VideoDriver_SDL::ChangeResolution(), VideoDriver_Win32::ChangeResolution(), PacketWriter::Destroy(), DoScanNewGRFFiles(), DrawDirtyBlocks(), VideoDriver_Win32::EditBoxLostFocus(), PacketWriter::Finish(), GenerateWorld(), VideoDriver_SDL::MainLoop(), VideoDriver_Win32::MainLoop(), NetworkBackgroundUDPLoop(), NetworkGameListAddItemDelayed(), NetworkGameListHandleDelayedInsert(), NetworkUDPAdvertiseThread(), NetworkUDPClose(), NetworkUDPInitialize(), NetworkUDPQueryServer(), NetworkUDPRemoveAdvertiseThread(), PacketWriter::PopPacket(), ScanNewGRFFiles(), VideoDriver_SDL::ToggleFullscreen(), VideoDriver_Win32::ToggleFullscreen(), WaitTillGeneratedWorld(), PacketWriter::Write(), PacketWriter::~PacketWriter(), and ThreadMutexLocker::~ThreadMutexLocker().

virtual void ThreadMutex::WaitForSignal | ( |  | ) |
| pure virtual

Wait for a signal to be send.

Precondition
  You must be in the critical section.

Note
  While waiting the critical section is left.

Postcondition
  You will be in the critical section.

Implemented in ThreadMutex_pthread, ThreadMutex_Win32, ThreadMutex_OS2, and ThreadMutex_None.

Referenced by VideoDriver_SDL::MainLoop(), and PacketWriter::~PacketWriter().

The documentation for this class was generated from the following files:

- src/thread/thread.h
- src/thread/thread_none.cpp
- src/thread/thread_os2.cpp
- src/thread/thread_pthread.cpp
- src/thread/thread_win32.cpp