From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Wed, 23 Mar 2005 08:57:56 +0200 From: Sergey Reva Message-ID: <538092562.20050323085756@mail.ru> To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Subject: Re: [9fans] How it work? In-Reply-To: References: <16725440859.20050322210023@mail.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 287184ae-ead0-11e9-9d60-3106f5b1d025 Hello fans Thanks Tim for advice! Now I find: 1. "lock" used tas (test-and-set), in libc too 2. "queuing lock" use "lock", and also suspend task which wait locking 3. "rendezvous" can handle two task (and live in kernel) 4. "Rendez" (as subset of rsleep;rwakeup;rwakeupall) can handle multiple tasks (and live in libc) Is it right? TN> There are several types of locks. Some (like spin locks) can operate TN> without any assistance from the kernel (not entirely, they yield with a TN> syscall). Others (like rendezvous) use the kernel to mediate between the TN> processes. As I seen both rendezvous and Rendez(rsleep;rwakeup;rwakeupall) change state of process but Rendez can do this even in libc, where is different other than state of process: Rendezvous (in syscall) and Sleep (in rendez)? why rendezvous need to be at kernel? -- http://rs-rlab.narod.ru mailto:rs_rlab@mail.ru