public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
* semaphores
@ 1999-04-20 13:08 Michael Ambrus
  1999-04-20 19:16 ` semaphores Ross Johnson
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Ambrus @ 1999-04-20 13:08 UTC (permalink / raw)
  To: 'pthreads-win32 mailing list'

Hi,
I've tried the new semaphores and they seem to work fine except that errno
is not properly set as Ross said. I'm confused about the "pshared" attribute
though. Should it not be != 0 if the semaphore is to be shared between
processes/treads ?

W.k.r.
Michael Ambrus

^ permalink raw reply	[flat|nested] 12+ messages in thread
* semaphores
@ 2002-05-30  7:11 Rob Fanner
  0 siblings, 0 replies; 12+ messages in thread
From: Rob Fanner @ 2002-05-30  7:11 UTC (permalink / raw)
  To: pthreads-win32

[-- Attachment #1: Type: text/plain, Size: 1241 bytes --]

I'm new to using pthreads-win32 (SNAPSHOT 2002-03-02), and I have to port 
a program from Linux to Windows 2000. A bug has somehow crept into my 
code, and I've narrowed the problem area down to a code fragment similar 
to the following:

#include <semaphore.h>
#include <cassert>
#include <iostream>

using namespace std;

int main()
{
   /**
    * We want to check wether a semaphore can be initialised
    * with a value.
    */
   
   // a semaphore
   sem_t psem;

   // initialise it with value 10
   assert(sem_init(&psem,0,10) == 0);                       // ASSERT NO 1
   // if the semaphore initialisation was ok, the sem
   // should now have the value 10
   int ret = 0;
   assert(sem_getvalue(&psem,&ret) == 0);               // ASSERT NO 2
   // if no errors occured then value is now in the 
   // integer ret
   cout << endl << "sem_getvalue() returns value " << ret << endl << flush;
 
   return 0;
}

I'm using MS VC++ 6.0, and I'm linking with the precompiled pthreadVCE.lib library.
At runtime, the first assert() passes OK, but second fails.
I have no idea why this fails (hopefully it's simply a newby error, and not a bug in 
the pthreads-win32 lib), but it does.

Thanks
Rob

[-- Attachment #2: Type: text/html, Size: 2813 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread
* RE: semaphores
@ 2002-05-30  7:49 Bossom, John
  2002-05-30  8:37 ` semaphores Phil Frisbie, Jr.
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Bossom, John @ 2002-05-30  7:49 UTC (permalink / raw)
  To: 'Rob Fanner', pthreads-win32

[-- Attachment #1: Type: text/plain, Size: 2295 bytes --]

sem_getvalue()? 
 
I don't see that in the standard (POSIX.1b (POSIX 1003.1b-1993))... I assume
this
has been added to the pthreads-win32 implementation as an extension (Ross?)
 
Perhaps there is a bug in that new method.
 
However, try looping over sem_trywait and count the # of times it returns 0.
It should return EAGAIN
when the semaphore count is zero.
 
Sorry, I can't help you with the sem_getvalue....
 
Note that since the sem_ calls are from an earlier standard, that when they
fail they are supposed
to return -1 and set errno to the actual error number....
 
John.

-----Original Message-----
From: Rob Fanner [mailto:rfanner@stonethree.com]
Sent: May 30, 2002 10:10 AM
To: pthreads-win32@sources.redhat.com
Subject: semaphores


I'm new to using pthreads-win32 (SNAPSHOT 2002-03-02), and I have to port 
a program from Linux to Windows 2000. A bug has somehow crept into my 
code, and I've narrowed the problem area down to a code fragment similar 
to the following:
 
#include <semaphore.h>
#include <cassert>
#include <iostream>
 
using namespace std;
 
int main()
{
   /**
    * We want to check wether a semaphore can be initialised
    * with a value.
    */
   
   // a semaphore
   sem_t psem;
 
   // initialise it with value 10
   assert(sem_init(&psem,0,10) == 0);                       // ASSERT NO 1
   // if the semaphore initialisation was ok, the sem
   // should now have the value 10
   int ret = 0;
   assert(sem_getvalue(&psem,&ret) == 0);               // ASSERT NO 2
   // if no errors occured then value is now in the 
   // integer ret
   cout << endl << "sem_getvalue() returns value " << ret << endl << flush;
 
   return 0;
}
 
I'm using MS VC++ 6.0, and I'm linking with the precompiled pthreadVCE.lib
library.
At runtime, the first assert() passes OK, but second fails.
I have no idea why this fails (hopefully it's simply a newby error, and not
a bug in 
the pthreads-win32 lib), but it does.
 
Thanks
Rob


This message may contain privileged and/or confidential information.  If you
have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.

[-- Attachment #2: Type: text/html, Size: 5750 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread
* RE: semaphores
@ 2002-05-30  8:49 Nicolas EDEL
  0 siblings, 0 replies; 12+ messages in thread
From: Nicolas EDEL @ 2002-05-30  8:49 UTC (permalink / raw)
  To: Phil Frisbie, Jr., Bossom, John; +Cc: Rob Fanner, pthreads-win32

Isn't it POSIX 1003.1 , but Realtime Extensions ?


> -----Message d'origine-----
> De : Phil Frisbie, Jr. [mailto:phil@hawksoft.com]
> Envoyé : jeudi 30 mai 2002 17:34
> À : Bossom, John
> Cc : 'Rob Fanner'; pthreads-win32@sources.redhat.com
> Objet : Re: semaphores
> 
> 
> It is included in the The Single UNIX ® Specification, Version 2.
> 
> http://www.opengroup.org/onlinepubs/7908799/xsh/sem_getvalue.html
> 
> 
> Phil Frisbie, Jr.
> Hawk Software
> http://www.hawksoft.com
> 

> -----Message d'origine-----
> De : Phil Frisbie, Jr. [mailto:phil@hawksoft.com]
> Envoyé : jeudi 30 mai 2002 17:34
> À : Bossom, John
> Cc : 'Rob Fanner'; pthreads-win32@sources.redhat.com
> Objet : Re: semaphores
> 
> 
> It is included in the The Single UNIX ® Specification, Version 2.
> 
> http://www.opengroup.org/onlinepubs/7908799/xsh/sem_getvalue.html
> 
> 
> Phil Frisbie, Jr.
> Hawk Software
> http://www.hawksoft.com
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread
* Semaphores
@ 2002-06-05  4:25 Platzer Wolfgang
  0 siblings, 0 replies; 12+ messages in thread
From: Platzer Wolfgang @ 2002-06-05  4:25 UTC (permalink / raw)
  To: pthreads-win32


Hi,

here is a link to a code that shows how to use an undocumented Win32 API call to query the value of a semaphore: http://www.codeguru.com/win32/querysem.shtml

It works fine for WinNT, Win2000 and WindowsXP!

regards,

wolfgang

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2002-06-05 11:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-04-20 13:08 semaphores Michael Ambrus
1999-04-20 19:16 ` semaphores Ross Johnson
2002-05-30  7:11 semaphores Rob Fanner
2002-05-30  7:49 semaphores Bossom, John
2002-05-30  8:37 ` semaphores Phil Frisbie, Jr.
2002-05-30  9:33 ` semaphores Rob Fanner
2002-05-30  9:38 ` semaphores Rob Fanner
2002-05-30 22:32 ` semaphores Ross Johnson
2002-05-31  0:48   ` semaphores Rob Fanner
2002-06-02 21:35     ` semaphores Ross Johnson
2002-05-30  8:49 semaphores Nicolas EDEL
2002-06-05  4:25 Semaphores Platzer Wolfgang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).