Linked by Hadrien Grasland on Fri 27th May 2011 11:34 UTC
General Development After having an interesting discussion with Brendan on the topic of deadlocks in threaded and asynchronous event handling systems (see the comments on this blog post), I just had something to ask to the developers on OSnews: could you live without blocking API calls? Could you work with APIs where lengthy tasks like writing to a file, sending a signal, doing network I/O, etc is done in a nonblocking fashion, with only callbacks as a mechanism to return results and notify your software when an operation is done?
Thread beginning with comment 474898
To read all comments associated with this story, please click here.
Old News
by shotsman on Sat 28th May 2011 17:30 UTC
shotsman
Member since:
2005-07-22

There have been Operating Systems that implement Asynchronous I/O in existance for years.
I first programmed one in 1975/6. It was called RSX11-D

The basic IO call was QIO ( Queue !!!!! I/O )
OOTB it was Asynchronous.
If you wanted is Synchronous you used the QIOW version
(Queue I/O & Wait)

You would issue a QIO call and sometime later either test an event flag or an AST (Asynchtonous System Trap) would be fired.

This was carried over into VMS and is still there today.

There are many Async queueing/messaging products around. However many people (more used to WebServices & Unix) find it difficult to accept 'Fire & Forget' operations. I use one of these every day. It is called WebSphere MQ or good old MQSeries. You can turn it into a Request/Reply model if you want but with reliable delivery why not drop a message onto a queue and then get on with doing something else.
I studied Queueing Theory as an undergad in 1975 and wrote a Software Queueing system in 1981 at DEC. IT was Async in operation. IT was embedded in another product.
For me doing things synchronously is ... well just wrong. We live in an async world. Why is so much software written using the Synchronous model? Laziness I suppose.

Reply Score: 4

RE: Old News
by Alfman on Sun 29th May 2011 18:17 in reply to "Old News"
Alfman Member since:
2011-01-28

shotsman,

"There have been Operating Systems that implement Asynchronous I/O in existance for years."

All the posts saying this is "old news" are completely missing the point - nobody's claiming that it is "new". If articles were restricted to "news", then we'd be left with legal articles and product announcements with very little technical merit at all.

All of us know that many models have been exploited in computing history. It's still a good question to ask which model best fits today, and the fact that there is a debate on these topics is a good thing in my opinion.


That said, thank you for your recollections!

"I first programmed one in 1975/6. It was called RSX11-D"

Was this a parallel computer?

"There are many Async queueing/messaging products around. However many people (more used to WebServices & Unix) find it difficult to accept 'Fire & Forget' operations. I use one of these every day. It is called WebSphere MQ or good old MQSeries."

IBM mainframe computers use this mechanism almost exclusively. biztalk does it too. I think it's a powerful and scalable concept which is lost in modern CS courses.

Reply Parent Score: 2

RE[2]: Old News
by shotsman on Mon 30th May 2011 18:57 in reply to "RE: Old News"
shotsman Member since:
2005-07-22

AS MQSeries originated on the IBM Mainframe then I'd say we are in agreement.

As for 1975/76. I was using a DEC PDP-11.
Both the RSX-11 & the RT-11 Operating systems were Async IO based. Writing device drivers for them and also VMS was a really enjoyable experience.

The concept of an AST (Asynchronous System Trap) is really nice. This is a bit of code that gets executed when the I/O you have requested completes.

Reply Parent Score: 2