From mboxrd@z Thu Jan 1 00:00:00 1970 To: 9fans@cse.psu.edu Date: Mon, 21 Aug 2000 08:59:32 +0000 From: "Douglas A. Gwyn" Message-ID: <399F246E.251B1062@null.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit References: <200008182206.SAA19560@cse.psu.edu>, <20000819083447.J4695@cackle.proxima.alt.za> Subject: Re: [9fans] cooperative threads Topicbox-Message-UUID: fdcb3fbc-eac8-11e9-9e20-41e7f4b1d025 Lucio De Re wrote: > It is quite amusing to recollect Edsger Dijkstra's horror when asked > to program a very early pre-emptive computer. He is reported to have > needed serious convincing before he accepted the principle of > _interrupts_ :-) With good reason. In the early days, before people like Dijkstra and Hoare had developed reasonable models for concurrency, it was hard to control the concurrency in preemptive (interrupt) environments. For example, the CDC 1700 operating system had several forms of I/O, the one necessary for double-buffering involving a "completion routine" that would be invoked when the I/O request had been satisfied. It was possible to write correct applications under such a scheme, but it was much easier to write ones with race conditions etc. I think threads are popular for two main reasons: (1) They are an easy way to exploit multiple processing units. (2) They are much lighter weight than communicating full processes.