about summary refs log tree commit diff
path: root/src/rt/sync
AgeCommit message (Collapse)AuthorLines
2011-06-27A little tidying in rt.Graydon Hoare-1/+1
2011-06-27Implementation mising features in lock_and_signal for Win32. Also lowered ↵Eric Holk-5/+6
the minimum stack size to get the pfib benchmark to run without exhausting its address space on Windows.
2011-06-27Conservatively serialize nearly all upcalls. Successfuly ran make check with ↵Eric Holk-1/+3
RUST_THREADS=8, so we're probably fairly safe now. In the future we can relax the synchronization to get better performance.
2011-06-27Basic multithreading support. The infinite loops test successfully maxes out ↵Eric Holk-0/+37
the CPU.
2011-06-13This is the mega-ucontext commit. It replaces the task switching mechanism ↵Eric Holk-10/+10
with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc). This commit also moves yield and join to the standard library, as requested in #42. Join is currently a no-op though.
2011-06-09Remove executable bit from lock_and_signal.cpp.Erick Tryzelaar-0/+0
2011-04-08add FIXME related to the -fno-strict-aliasing workaroundMarijn Haverbeke-0/+2
2010-10-20Add a virtual destructor to rust_thread in sync.h, to quiet the compilerPatrick Walton-0/+2
2010-09-16Fixed deadlock caused by the message pump not being notified of new message ↵Michael Bebenita-1/+1
sends.
2010-09-10Cleanup, refactoring, and some runtime tests.Michael Bebenita-0/+20
2010-09-10Added lock_and_signal::signal_all(), and made the rust_kernel::join() use ↵Michael Bebenita-9/+25
wait instead of yield.
2010-09-08Tidy up the sync dir, remove dead or mis-designed code in favour of OS ↵Graydon Hoare-306/+125
primitives, switch rust_kernel to use a lock/signal pair and wait rather than spin.
2010-09-07Fixed race in the rust kernel.Michael Bebenita-2/+10
2010-09-07Lots of design changes around proxies and message passing. Made it so that ↵Michael Bebenita-2/+0
domains can only talk to other domains via handles, and with the help of the rust_kernel.
2010-09-07Added a thread utility class to factor out operations on threads.Michael Bebenita-0/+64
2010-09-07Added a few utility classes, cleaned up the include order of .h files, and ↵Michael Bebenita-0/+2
started to make the Rust kernel own domain message queues rather than the Rust domains themselves.
2010-08-24Implemented an lock free queue based on this paper ↵Michael Bebenita-13/+284
http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf, the "lock free queue" we had before wasn't lock free at all.
2010-08-17Made the lock_free_queue lock (temporarily, until fixed).Michael Bebenita-0/+7
2010-08-16Putting out the burning tree on Windows. Turns out you can completely starve ↵Michael Bebenita-2/+2
threads by not yielding on windows/vmware, really weird.
2010-08-11Added support for task sleeping in the scheduler.Michael Bebenita-0/+86
2010-08-09Added class to abstract away platform specific thread primitives.Michael Bebenita-0/+21
2010-08-09Added timed_wait to condition variables.Michael Bebenita-5/+24
2010-07-19Added a message passing system based on lock free queues for inter-thread ↵Michael Bebenita-16/+119
communication. Channels now buffer on the sending side, and no longer require blocking when sending. Lots of other refactoring and bug fixes.
2010-06-23Populate tree.Graydon Hoare-0/+171