|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r76187 - trunk/libs/interprocess
From: igaztanaga_at_[hidden]
Date: 2011-12-26 12:38:12
Author: igaztanaga
Date: 2011-12-26 12:38:11 EST (Mon, 26 Dec 2011)
New Revision: 76187
URL: http://svn.boost.org/trac/boost/changeset/76187
Log:
Erased unneeded file
Removed:
trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt
Deleted: trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt
==============================================================================
--- trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt 2011-12-26 12:38:11 EST (Mon, 26 Dec 2011)
+++ (empty file)
@@ -1,207 +0,0 @@
----------------
----------------
-named_semaphore
----------------
----------------
-
-- Use a file for file lifetime semantics (create, open, unlink...)
-- Create on demand (open or create) a windows named semaphore with all access (permissions are on the file).
-- Use file id with a "prefix bips." to construct the mutex "Global\prefix bips.XXXXXXXXXXXXXXXXXXX"
-- Add getvalue as implemented by cygwin
-- Write sem status to file at file close. Use native file locking to serialize.
-- See cygwin-1.7.5-1\winsup\cygwin\posix_ipc.cc and thread.cc
-
-
-
-
------------
------------
-named_mutex
------------
------------
-
-- Don't serialize
-
----------------
----------------
-named_condition
----------------
----------------
-
-
----------------
----------------
-Process shared resources. Use lock reduced versions?
----------------
----------------
-
-what about fast_semaphore (http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2005-03/0041.html):
-
-class fast_semaphore
-{
-
-public:
-
- fast_semaphore( LONG init )
- : m_state( init ),
- m_waitset( CreateSemaphore( 0, 0, LONG_MAX, 0 ) )
- { if ( ! m_waitset ) { throw; } }
-
- ~fast_semaphore()
- { if ( ! CloseHandle( m_waitset ) ) { abort(); } }
-
-public:
-
- void inc()
- {
- if ( InterlockedIncrement( &m_state ) < 1 )
- {
- if ( ! ReleaseSemaphore( m_waitset, 1, 0 ) )
- {
- throw;
- }
- }
- }
-
- void dec()
- {
- if ( InterlockedDecrement( &m_state ) < 0 )
- {
- if ( WaitForSingleObject( m_waitset, INFINITE ) !=
-WAIT_OBJECT_0 )
- {
- throw;
- }
- }
- }
-
-private:
-
- volatile LONG m_state;
- HANDLE m_waitset;
-
-};
-
-class mutex_from_semaphore
-{
-
-public:
-
- mutex_from_semaphore() : m_waitset( 1 ) {}
-
-public:
-
- void enter() { m_waitset.dec(); }
- void leave() { m_waitset.inc(); }
-
-private:
-
- fast_semaphore m_waitset;
-
-};
-
-Or see Java implemenation (http://www.google.com/codesearch/p?hl=es#5qy3uURTOpU/trunk/JobRunner/src/org/ivoa/util/concurrent/FastSemaphore.java&q=%22fast%20semaphore%22&sa=N&cd=1&ct=rc&l=10)
-
-
-For mutex, usefast mutex (see fast_mutex.h in cygwin):
-
-
-class fast_mutex
-{
-public:
- fast_mutex () :
- lock_counter (0), win32_obj_id (0)
- {
- }
-
- ~fast_mutex ()
- {
- if(win32_obj_id)
- CloseHandle (win32_obj_id);
- }
-
- bool init ()
- {
- lock_counter = 0;
- win32_obj_id = ::CreateEvent (&sec_none_nih, false, false, NULL);
- if (!win32_obj_id)
- {
- debug_printf ("CreateEvent failed. %E");
- return false;
- }
- return true;
- }
-
- void lock ()
- {
- if (InterlockedIncrement ((long *) &lock_counter) != 1)
- cancelable_wait (win32_obj_id, INFINITE, cw_no_cancel, cw_sig_resume);
- }
-
- void unlock ()
- {
- if (InterlockedDecrement ((long *) &lock_counter))
- ::SetEvent (win32_obj_id);
- }
-
-private:
- unsigned long lock_counter;
- HANDLE win32_obj_id;
-};
-
-
-Or this one (http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2005-03/0067.html):
-
-
-class fast_mutex
-{
-
-public:
-
- fast_mutex
- : m_state( 0 ),
- m_waitset( CreateEvent( 0, FALSE, FALSE 0 ) )
- { if ( ! m_waitset ) { throw; } }
-
- ~fast_mutex
- { if ( ! CloseHandle( m_waitset ) ) { abort(); } }
-
-public:
-
- void enter
- {
- if ( InterlockedExchange( &m_state, 1 ) )
- {
- _asm pause; /* masm */
-
- while ( InterlockedExchange( &m_state, 2 ) )
- {
- if ( WaitForSingleObject
- ( m_waitset,
- INFINITE ) !=
- WAIT_OBJECT_0 )
- {
- throw;
- }
- }
- }
- }
-
- void leave()
- {
- if ( InterlockedExchange( &m_state, 0 ) == 2 )
- {
- if ( ! SetEvent( m_waitset ) )
- {
- throw;
- }
- }
- }
-
-private:
-
- volatile LONG m_state;
- HANDLE m_waitset;
-
-};
-
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk