[Info-vax] pthread_kill() replacement for VMS?

Bill Gunshannon bill.gunshannon at gmail.com
Fri Jul 28 20:08:57 EDT 2017


On 7/28/2017 4:06 PM, Arne Vajhøj wrote:
> On 7/28/2017 7:33 AM, Bill Gunshannon wrote:
>> On 7/27/2017 8:18 PM, David Froble wrote:
>>> Bill Gunshannon wrote:
>>>> On 7/27/2017 9:46 AM, David Froble wrote:
>>>>> John Reagan wrote:
>>>>>> "The foremost is that UNIX signals are emulated on OpenVMS, and 
>>>>>> that emulation
>>>>>> is provided by the C RTL, not by the base OS.  Thus, the C RTL 
>>>>>> would be the
>>>>>> logical host for pthead_kill(), not the threads library.  However, 
>>>>>> the C RTL,
>>>>>> by design, cannot contain any static references to the threads 
>>>>>> library, nor
>>>>>> does it have any ability to effect signal delivery in a thread 
>>>>>> other than the
>>>>>> current one, and so considerable support would have to be provided 
>>>>>> by the
>>>>>> threads library for the C RTL.  (All of this is ignoring the fact 
>>>>>> that the
>>>>>> signal handler vector and signal delivery masks are currently 
>>>>>> global and not
>>>>>> per-thread.)"
>>>>>
>>>>> Another example of software anarchy in place of well thought out 
>>>>> software architecture.
>>>>>
>>>>> Just like the attempt to implement byte range locking in the CRTL, 
>>>>> instead of the logical place, the DLM that exists to provide locking.
> 
>>>> Funny you should say this. I used to say it all the time but
>>>> the Ada fanatics still insisted that no matter how warped or
>>>> incompatible it was between compilers multi-tasking should
>>>> remain a part of the language as opposed to a part of the OS. :-)
> 
>>> Well, I guess that would depend on the multi-tasking being performed, 
>>> and such.  Sure, an OS provides for multiple processes.  However, a 
>>> single process may need to control and coordinate multiple "things".
> 
>> While that may be true, according to the standard Ada multi-tasking
>> is downright hilarious.  On one implementation it can be synchronous
>> while on another it can be asynchronous and both will meet the
>> standard.
>>
>> Unless you are running an OS that does not support tasking at all,
>> it should remain in the OS.  Having multiple controllers trying to
>> do the tasking is sure to result in conflicts including race
>> conditions, deadlocks and god only knows what else.  A single
>> process can control and coordinate multiple "things" even if the
>> actual multi-tasking is done by the OS. That's what IPC is for.
> 
> There is an argument for having the language or language runtime
> provide the threading: it allows for the same model across all OS.

I think you missed the point.  The Ada standard does no such thing and
leaves it up to the individual compiler implementer so that they can do
completely incompatible multi-tasking implementations and still meet
the standard.

> 
> Of course ideally the OS should provide a very flexible threading
> system allow all languages/runtimes to encapsulate it in their
> API.
> 
> Arne
> 
> 

bill





More information about the Info-vax mailing list