discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fwd: Messaging across threads using NSThread


From: Samantha Rahn
Subject: Fwd: Messaging across threads using NSThread
Date: Mon, 6 Apr 2009 18:53:00 -0400

From: Samantha Rahn <samantha.rahn@gmail.com>
Date: Mon, Apr 6, 2009 at 6:51 PM
Subject: Re: Messaging across threads using NSThread
To: Nicolas Roard <nicolas.roard@gmail.com>

I am running Gnustep under Windows and am finding that that method
performSelectorOnMainThread: as well as other related methods and
other NSPort related methods do not work.  Specifically with this
performSelectorMethod I find that the windows call below fails with
error:

 2009-04-03 19:21:58.527 Tool[1234] Set event failed - The handle is invalid.

The applicable code in NSThread.m is:

  - (void) addPerformer: (id)performer
  {
     [lock lock];
     [performers addObject: performer];
   #if defined(__MINGW32__)
     if (SetEvent(event) == 0)
     {
        NSLog(@"Set event failed - %@", [NSError _last]);
     }
  #else
     if (write(outputFd, "0", 1) != 1)
     {
       NSLog(@"Write to pipe failed - %@", [NSError _last]);
     }
 #endif
    [lock unlock];
 }


After reading about the SetEvent function call on MSDN, I learned that
there is a security model for Windows to send messages using SetEvent.
 However, the code sends a NULL value for the permissions (uses the
default security).

Does anyone know what configuration is required to allow this to work
under Windows?

Thanks so much for any assistance.
Sam


On Mon, Apr 6, 2009 at 6:06 PM, Nicolas Roard <nicolas.roard@gmail.com> wrote:
> On Mon, Apr 6, 2009 at 11:09 PM, Fred Kiefer <fredkiefer@gmx.de> wrote:
>> Nicolas Roard wrote:
>>> On Mon, Apr 6, 2009 at 8:48 PM, Riccardo Mottola <multix@ngi.it> wrote:
>>>> Hello,
>>>>
>>>> in FTP (available in GAP, http://gap.nongnu.org) I do inter-thread 
>>>> messaging
>>>> with the precise goal to have threads perform operations on the main thread
>>>> GUI operations.
>>>>
>>>> I set up DO between the app itself this way:
>>>
>>> I was surprised that you did not mention performSelectorOnMainThread:
>>> (http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelectorOnMainThread:withObject:waitUntilDone:)
>>> but it sadly doesn't seem to be implemented on gnustep (I was sure it
>>> was !?).
>>>
>>
>>
>> It is there in NSThread.m, most likly you looked in a different place.
>
> Ah, thanks ! yes, I only looked in NSObject.m. My bad !
>
> --
> Nicolas Roard
>
>
> _______________________________________________
> Gnustep-dev mailing list
> Gnustep-dev@gnu.org
> http://lists.gnu.org/mailman/listinfo/gnustep-dev
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]