Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!usenet.ukfsn.org!not-for-mail From: Martin Gregorie Newsgroups: comp.lang.java.programmer Subject: Re: O.T. optimising file placement Date: Sat, 25 Feb 2012 13:15:39 +0000 (UTC) Organization: UK Free Software Network Lines: 43 Message-ID: References: <3gm7k7lgroqn30g0nd7lqgsqo60hq02em1@4ax.com> <4f45a713$0$291$14726298@news.sunsite.dk> <4f4839ed$0$294$14726298@news.sunsite.dk> NNTP-Posting-Host: 84.45.235.129 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: localhost.localdomain 1330175739 11672 84.45.235.129 (25 Feb 2012 13:15:39 GMT) X-Complaints-To: usenet@localhost.localdomain NNTP-Posting-Date: Sat, 25 Feb 2012 13:15:39 +0000 (UTC) User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 30dc37b master) Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:12314 On Fri, 24 Feb 2012 20:31:25 -0500, Arne Vajhøj wrote: > On 2/23/2012 6:16 PM, Martin Gregorie wrote: >> On Wed, 22 Feb 2012 21:40:19 -0500, Arne Vajhøj wrote: >>> Most OS'es support async IO. >>> >> Yes, I know, but its not relevant to a single-threaded process since >> its logic generally requires it to wait for a read or write to complete >> before it continues[1]. Hence my comment that this prevents head >> movement being optimized unless a lot of processes are active because >> there's only one outstanding IOP per process. >> >> [1] unless you're deliberately doing async i/o using poll() or >> select() (in C) or nio (in Java), in which case the process is >> often best regarded as a half-way house between single and >> multi-threaded logic. > > I am talking about deliberate not accidental async IO. > > And you maybe consider it half singlethreaded half multithreaded, > but when there is only one thread it is usually just called single > threaded. > Yes, I agree that it is technically single threaded programming and therefore dodges a lot of problems associated with threading (especially in C). Nonetheless most of the async i/o I've seen in C ends up treating transfers to and from a channel as a connected set of transfers, i.e. some context is associated with the channel and is kept distinct from context associated with other channels. The use of context implies having dedicated data storage for that channel, so from some viewpoints the logic of the program is indistinguishable from that used in a threaded approach. I can't comment about nio in Java since I haven't yet needed to use it. Anyway, that's what I meant by the mongrel 'half-threaded' term. -- martin@ | Martin Gregorie gregorie. | Essex, UK org |