[Ace-users] [ace-users] Problem with ACE_Thread_Semaphore
Johnny Willemsen
jwillemsen at remedy.nl
Tue Dec 18 13:21:54 CST 2007
Hi,
This could also be a problem with the autoconf build, we do consider
autoconf experimental.
Regards,
Johnny Willemsen
Remedy IT
Postbus 101
2650 AC Berkel en Rodenrijs
The Netherlands
www.theaceorb.nl / www.remedy.nl
*** Integrated compile and test statistics see
http://scoreboard.theaceorb.nl ***
*** Commercial service and support for ACE/TAO/CIAO ***
*** See http://www.theaceorb.nl/en/support.html ***
"Douglas C. Schmidt" <schmidt at dre.vanderbilt.edu> wrote in message
news:<mailman.3199.1197997407.5286.ace-users at mail.cse.wustl.edu>...
>
> Hi Jonas,
>
> > ACE VERSION: 5.6.1
>
> Thanks for using the PRF.
>
> > HOST MACHINE and OPERATING SYSTEM:
> > P4 with Fedora Core 7
> >
> > TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
> > COMPILER NAME AND VERSION (AND PATCHLEVEL):
> >
> > THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
> > specific file, simply state which one]:
> > Using rpm for FC7 downloaded from
http://dist.bonsai.com/ken/ace_tao_rpm/index.html
> >
> > THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
> > use a link to a platform-specific file, simply state which one
> > (unless this isn't used in this case, e.g., with Microsoft Visual
> > C++)]:
> >
> > CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
> > (used by MPC when you generate your own makefiles):
> >
> > AREA/CLASS/EXAMPLE AFFECTED:
> > [What example failed? What module failed to compile?]
> >
> > DOES THE PROBLEM AFFECT:
> > COMPILATION? No
> > LINKING? No
> > EXECUTION? Yes
> >
> > SYNOPSIS:
> > Problem sync threads with ACE_Thread_Semaphore
> >
> > DESCRIPTION:
> > A simple testprogram (see below) fails to sync two thread using
ACE_Thread_Semaphore. The program creates a
> > ACE_Thread_Semaphore which initially is locked. The main-thread creates
a new thread and when waits for this thread by
> > calling acquire() on the semaphore. The newly created thread starts by
sleeping for a while and then calls release() on the
> > semaphore.
> >
> > When the main-thread reaches the semSync.acquire() is blocks as
expected. Later when the new thread continue after initial
> > sleep is calls semSync.release() is also blocks. This is not expected.
Both threads blocks and the program hangs...
>
> I tweaked your test a bit to print out when the main thread exits. I
> then tried running your test on Linux with 5.6.2. Here's the output I
> got:
>
> % ./Semaphore_Test
> main() - about to create thread...
> main() - waiting for thread to start loop...
> runThread() sleeping...
> runThread() about to release...
> runThread() sleeping...
> main() - waiting for thread to stop...
> runThread() sleeping...
> runThread() sleeping...
> runThread() sleeping...
> runThread() sleeping...
> main() - shutting down...
> %
>
> This appears to run fine. Perhaps there's something odd with the
> underlying OS semaphore implementation on Fedora Core 7?
>
> Thanks,
>
> Doug
>
> > REPEAT BY:
> > #include "ace/OS_NS_unistd.h"
> > #include "ace/Thread.h"
> > #include <ace/Thread_Semaphore.h>
> >
> > #include <iostream>
> >
> > ACE_Thread_Semaphore semSync(0);
> >
> > ACE_THR_FUNC_RETURN runThread(void* /*param*/)
> > {
> > std::wcout << "runThread() sleeping..." << std::endl;
> >
> > ACE_OS::sleep(5);
> >
> > std::wcout << "runThread() about to release..." << std::endl;
> > semSync.release();
> >
> > for(int i=0; i<5; ++i)
> > {
> > std::wcout << "runThread() sleeping..." << std::endl;
> > ACE_OS::sleep(1);
> > }
> >
> > semSync.release ();
> > }
> >
> > int main(int, char**)
> > {
> > std::wcout << "main() - about to create thread..." << std::endl;
> > ACE_Thread::spawn(runThread);
> >
> > std::wcout << "main() - waiting for thread to start loop..." <<
std::endl;
> > semSync.acquire();
> >
> > std::wcout << "main() - waiting for thread to stop..." << std::endl;
> >
> > semSync.acquire();
> >
> > return 0;
> > }
> >
> > _______________________________________________
> > ace-users mailing list
> > ace-users at mail.cse.wustl.edu
> > http://mail.cse.wustl.edu/mailman/listinfo/ace-users
>
More information about the Ace-users
mailing list