Marc Siegel
ef3d6958ea
Slight refactor to share common code path and clarify behavior
2013-12-30 13:22:07 -05:00
Marc Siegel
49773b66f4
Add Semaphore#to_mtx returning an unchecked mutex-like facade
...
Because there is a very significant performance hit for using the
mutex implementation, which correctly checks ownership, this
implementation formalizes treating a raw semaphore as a faster,
unchecked implementation of mutex.
2013-12-30 13:20:29 -05:00
pmahoney
1b1fdbe287
Merge pull request #8 from ms-ati/fix-cond-var-signal-when-no-waiters
...
Fix ConditionVariable#signal to only post if semaphore has waiters
2013-12-27 14:49:04 -08:00
Marc Siegel
4518e6fdad
Fix ConditionVariable#signal to only post if semaphore has waiters
...
This fixes a bug where calls to #signal would end up "over-posting"
the semaphore, causing subsequent waits to return immediately until
the semaphore value is back down to zero.
2013-12-27 15:15:07 -05:00
Marc Siegel
41b6777638
Fix SharedMemoryIO#read for binary data on Ruby 1.9+
2013-12-27 13:38:23 -05:00
Marc Siegel
aeadb74ef6
Fix Mutex to allow lock from different Ruby (green) thread in process
2013-12-27 10:46:50 -05:00
Marc Siegel
d2f8af03eb
Workaround apparent bug in 1.8.7/REE: block all during sem_timedwait
2013-12-26 13:48:29 -05:00
Marc Siegel
e2e70591a1
On posix, allow ruby threads to continue during wait / try_wait
2013-12-26 12:47:09 -05:00
Marc Siegel
50c096d84c
On mach, allow other ruby threads to continue during semaphore try_wait
2013-12-26 12:45:04 -05:00
Marc Siegel
d1644104c8
On mach, allow other ruby green threads to continue during semaphore wait
2013-12-26 12:27:36 -05:00
Patrick Mahoney
5aba20cdf7
Partial MonitorMixin implementation.
2012-03-29 23:00:52 -05:00
Patrick Mahoney
80284301a7
Use semaphore#synchronize convenience method internally.
2012-03-29 22:34:16 -05:00
Patrick Mahoney
1eff930480
Initial attempt at Monitor class.
2012-03-29 22:33:03 -05:00
Patrick Mahoney
da42ac4875
Refactor Mach FFI wrapper; get unit tests working again.
2012-02-08 21:30:18 -06:00
Patrick Mahoney
15fe2e5057
Refactor class hierarchy, implementation selection details.
2012-02-07 23:06:17 -06:00
Patrick Mahoney
60b1cd8e53
Add (again) default semaphore value; all tests passing on Linux.
2012-02-01 21:43:53 -06:00
Patrick Mahoney
842ff179ec
Remove no-longer-used libpsem and related code and tests.
2012-02-01 21:42:34 -06:00
Patrick Mahoney
8158666e90
Add posix-y compatibility extension class over Mach::Semaphore.
2012-02-01 21:36:15 -06:00
Patrick Mahoney
680527cbab
Add time and clock Mach functions; implement Mach::Semaphore#timedwait.
2012-02-01 21:34:51 -06:00
Patrick Mahoney
b76bf99947
Add additional mach error codes.
2012-02-01 21:32:08 -06:00
Patrick Mahoney
ffe1298731
Factor common TimeSpec methods into module.
2012-02-01 20:33:31 -06:00
Patrick Mahoney
71aa552213
Move with_self open-with-block helper to common module from posix semaphore implementation.
2012-02-01 19:44:24 -06:00
Patrick Mahoney
6f63c67c6e
Split SharedMemory into module and platform dependent bits. Make SharedArray extend platform dependent class.
2012-02-01 19:38:53 -06:00
Patrick Mahoney
db108a1913
Delete BoundedSemaphore.
2012-02-01 19:24:07 -06:00
Patrick Mahoney
bb2bb3c5d9
Make BinarySemaphore delegate to platform-dependent semaphore.
2012-02-01 19:23:45 -06:00
Patrick Mahoney
13922373d6
Create dedicated class for messages.
2012-01-29 22:57:13 -06:00
Patrick Mahoney
ae67dc6889
Add Ruby/FFI wrapper around POSIX shared memory and semaphore (obviating libpsem).
2012-01-29 22:54:22 -06:00
Patrick Mahoney
16ceacb31e
Document Port#insert_right method.
2012-01-21 18:39:27 -06:00
Patrick Mahoney
807e694ad3
Fix typo.
2012-01-21 15:11:16 -06:00
Patrick Mahoney
933690a426
Remove logging statement from #send_right.
2012-01-21 15:10:38 -06:00
Patrick Mahoney
0ac03cfefc
Add methods on port to send and receive rights from other tasks.
2012-01-21 15:06:46 -06:00
Patrick Mahoney
9f17aac114
Modify args to Semaphore and Port constructors to accept existing ports.
2012-01-16 08:14:58 -06:00
Patrick Mahoney
14e5b893bf
Make (require 'mach') load all subcomponents.
2012-01-15 08:08:17 -06:00
Patrick Mahoney
d337ddd0e3
Remove obsolete file added by mistake.
2012-01-15 08:05:34 -06:00
Patrick Mahoney
252d606c09
Add FFI wrapper around some of the Mach API (in Mac OS X).
2012-01-15 08:02:53 -06:00
Patrick Mahoney
893c457b35
Make ffi type to getter/setter method search more robust to work in 1.8 and 1.9.
2011-12-21 08:14:20 -06:00
Patrick Mahoney
a21071b590
Fix object writing and reading for Ruby 1.8 IO differences.
2011-12-21 07:58:55 -06:00
Patrick Mahoney
edc927709a
Avoid possible race in ConditionVariable where new processes begin waiting while #broadcast is running.
2011-12-20 22:12:25 -06:00
Patrick Mahoney
cc663a8d7f
Add SharedMemory#write_object and #read_object; add SharedMemoryIO helper.
2011-12-20 22:09:38 -06:00
Patrick Mahoney
611c41f939
Add SharedArray extension of SharedMemory (with Enumerable mixin).
2011-12-17 21:51:22 -06:00
Patrick Mahoney
ea063678cc
Update SharedMemory initializer to accept type and size.
2011-12-17 21:50:39 -06:00
Patrick Mahoney
d65979cc2e
Initial attempt at ConditionVariable implementation.
2011-12-17 11:05:39 -06:00
Patrick Mahoney
a1f881f59c
Add finalizer to SharedMemory.
2011-12-17 10:31:22 -06:00
Patrick Mahoney
7bdae6482f
Add finalizer to SharedMemory.
2011-12-17 10:31:09 -06:00
Patrick Mahoney
7d71937bf7
Add BinarySemaphore (error checking semaphore with max value 1).
2011-12-17 10:15:22 -06:00
Patrick Mahoney
0f00a7d444
Add minor explanatory comment.
2011-12-17 10:07:24 -06:00
Patrick Mahoney
7230e9f2c9
Add Semaphore#try_wait. Fix libpsem to convert relative timeout to absolute timeout.
2011-12-17 09:58:10 -06:00
Patrick Mahoney
f65ae434e4
Clear the error pointer so that it may be reused.
2011-12-17 07:53:15 -06:00
Patrick Mahoney
514df0f49f
Change from BoundedSemaphore to Semaphore in Mutex implementation so it will work on Mac OS X (and other platforms with out sem_getvalue().
2011-12-13 22:03:36 -06:00
Patrick Mahoney
d102786090
Expand documentation; fix markup.
2011-12-12 22:02:00 -06:00