Commit 637ead21 authored by Pavel Vainerman's avatar Pavel Vainerman

(mutex): попытка откорректировать spin_mutex

parent 1da74b3b
...@@ -28,11 +28,9 @@ ...@@ -28,11 +28,9 @@
#include <omnithread.h> #include <omnithread.h>
#include <signal.h> #include <signal.h>
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
//#warning Необходимо разобраться с atomic_add и т.п. (и вообще использовать futex-ы)
// -----------------------------------------------------------------------------------------
namespace UniSetTypes namespace UniSetTypes
{ {
typedef sig_atomic_t mutex_atomic_t; typedef volatile sig_atomic_t mutex_atomic_t;
// typedef _Atomic_word mutex_atomic_t; // typedef _Atomic_word mutex_atomic_t;
...@@ -101,7 +99,7 @@ namespace UniSetTypes ...@@ -101,7 +99,7 @@ namespace UniSetTypes
uniset_spin_mutex(); uniset_spin_mutex();
~uniset_spin_mutex(); ~uniset_spin_mutex();
void lock( int check_pause_msec=0 ); void lock( int check_pause_msec=1 );
void unlock(); void unlock();
uniset_spin_mutex (const uniset_spin_mutex& r); uniset_spin_mutex (const uniset_spin_mutex& r);
...@@ -115,7 +113,7 @@ namespace UniSetTypes ...@@ -115,7 +113,7 @@ namespace UniSetTypes
class uniset_spin_lock class uniset_spin_lock
{ {
public: public:
uniset_spin_lock( uniset_spin_mutex& m, int check_pause_msec=0 ); uniset_spin_lock( uniset_spin_mutex& m, int check_pause_msec=1 );
~uniset_spin_lock(); ~uniset_spin_lock();
private: private:
......
...@@ -73,7 +73,7 @@ void uniset_mutex::unlock() ...@@ -73,7 +73,7 @@ void uniset_mutex::unlock()
bool uniset_mutex::isRelease() bool uniset_mutex::isRelease()
{ {
return (bool)!mutex_atomic_read(&locked); return !(bool)mutex_atomic_read(&locked);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
const uniset_mutex &uniset_mutex::operator=(const uniset_mutex& r) const uniset_mutex &uniset_mutex::operator=(const uniset_mutex& r)
...@@ -179,7 +179,7 @@ void uniset_spin_mutex::lock( int check_pause_msec ) ...@@ -179,7 +179,7 @@ void uniset_spin_mutex::lock( int check_pause_msec )
void uniset_spin_mutex::unlock() void uniset_spin_mutex::unlock()
{ {
m = 0; mutex_atomic_set(&m,0);
} }
// ------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------
uniset_spin_lock::uniset_spin_lock( uniset_spin_mutex& _m, int check_pause_msec ): uniset_spin_lock::uniset_spin_lock( uniset_spin_mutex& _m, int check_pause_msec ):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment