× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Many typical applications programmers are ill-equipped to deal with the complexities of multi-threading. (Just consider how many developers are still programming in RPG/400 versus RPG IV, let alone using any of the "new" features of ILE, such as *SRVPGMs, etc.)

I am not just picking on RPG programmers. Even developers with years of C experience often have great difficulty developing "thread-safe" multi-threaded applications that do not end up with "race conditions" or other "deadly embraces" etc., or that simply do not live up to the expectations of multi-threading (such as improved performance, etc.)

In my opinion, the problem is somewhat akin to what happened when computers first appeared.

At first, you had to program computers directly in binary machine language (1st generation). Then, assembler languages were invented, that made the task a little easier for humans to comprehend (2nd Generation languages). Then. the first HLL compilers began to appear by the mid-to-late 1950s (such as COBOL, FORTRAN, etc.) -- so-called 3rd Generation languages.

By way of comparison, I think the "state of the art" (such as it is) today with "multi-threading" is still stuck at the 1GL or 2GL level; the paradigms and programming models, etc., for writing multi-threaded applications are rather primitive, and they do not hide any of the complexities from the developer. So, is it any wonder humans have difficulty writing correct multi-threaded applications that are "thread-safe" and perform well?

IBM more or less invented "threads" (light-weight multitasking) back in the late 1960s when they developed CICS to allow multiple terminals to run different applications on behalf of multiple users, simultaneously, all within a single MVT or DOS batch job. The brilliant thing about CICS, that is largely responsible for why CICS survives even today, is that the CICS API (from the application developer's point of view) made it fairly easy to write on-line applications that worked well, while hiding much of the inherent complexity.

Until someone figures out how to do something like this for modern multi-threaded applications written in modern HLLs, I think it will continue to be difficult to write "correct" multi-threaded and "thread-save" applications.

Mark S. Waterbury

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.