Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Aug 2005 03:44:41 +0300
From:      Giorgos Keramidas <keramida@linux.gr>
To:        Daniel Valencia <fetrovsky@yahoo.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: strange behaviour with pthread_cond_wait()
Message-ID:  <20050831004441.GB17733@gothmog.gr>
In-Reply-To: <20050831003539.4702.qmail@web53913.mail.yahoo.com>
References:  <20050831003539.4702.qmail@web53913.mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2005-08-30 17:35, Daniel Valencia <fetrovsky@yahoo.com> wrote:
> Hello, everybody...
>
> I have this multithreaded program, and there are these two threads
> that work together with a queue.  The backend receive thread reads
> packets and pushes them into the queue, while the frontend thread pops
> them off the queue to hand them to the caller.  This is an
> implementation of a software switch.
>
> The issue is, i have this little piece of code in the thread which
> actually performs the popping:

This is not a complete, compilable program.  It's usually much easier to
track down problems by looking at a minimal example that exhibits the
problem.  Can you post one?

>   if( !_recvq.size() )
>   {
>     int e = pthread_cond_wait( &_thread_cond_recv,
>                    &_thread_mutex_recv );
>
>     if( e )
>     {
>       std::perror( "pthread_cond_wait" );
>       std::exit( e );
>     }
>   }
>
>   pthread_mutex_lock( &_recvq_mutex );
>   p = _recvq.front();
>   _recvq.pop();
>   pthread_mutex_unlock( &_recvq_mutex );



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