Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Feb 2001 17:21:37 -0800 (PST)
From:      Marc W <mwlist@lanfear.com>
To:        freebsd-hackers@freebsd.org
Subject:   Where can I find out rules on blocking in threads?
Message-ID:  <200102270121.RAA39980@akira.lanfear.com>

next in thread | raw e-mail | index | archive | help




hello!

    I'm running into a problem with some threading using pthreads in an
application i'm writing for FreeBSD.

    The application basically 

    1. initializes some UI goo (but doesn't start any of it UP) using a
GUI framework (Qt)
    2. creates a FIFO, and then spawns a thread
    3. this new thread then does:

            fifo = open(fifoPath, O_RDONLY);

    4. after the new thread is spawned, the application is supposed to
then continue initialization, showing the main window and continuing on
happily.


    Now, the problem is that when step 3 above blocks on the open(2)
call (as it should, since the other end of the pipe isn't opened yet),
the whole application is frozen, and the main thread can't continue
with GUI processing, and the app appears to die.

    What is goofy is that this works just fine under Linux.  So,
FreeBSD has slightly different blocking rules or something -- but I
don't understand them.  It also hangs under Solaris 8/Intel.

    So, the question is:  how can I find out what these differences are
and try to get around them.   I'm using this to limit instances of my
program to one, and need a named pipe instead of just a lock file so
that new instances can communicate any arguments they might have been
given, etc ...  


    any suggestions?

    thanks!

    marc.



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102270121.RAA39980>