Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #479
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Alexander Terekhov <terekhov@web.de> |
| Newsgroups | comp.programming.threads |
| Subject | Re: pthread reentrance issue on Visual Studio |
| Date | Wed, 27 Jul 2011 12:39:39 +0200 |
| Organization | A noiseless patient Spider |
| Lines | 48 |
| Message-ID | <4E2FEAEB.957D7CAB@web.de> (permalink) |
| References | <ed5076fb-1240-4c2c-8da8-b6592ded1ce8@s2g2000vbw.googlegroups.com> |
| Reply-To | terekhov@web.de |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=us-ascii |
| Content-Transfer-Encoding | 7bit |
| Injection-Info | mx04.eternal-september.org; posting-host="MCbSEzW5qwGLFMNXJh39IQ"; logging-data="19422"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18wKikVvdToVJpLhMQyYWedO9GwYqkqtIs=" |
| X-Mailer | Mozilla 4.77 [en] (Windows NT 5.0; U) |
| X-Accept-Language | en |
| Cancel-Lock | sha1:XVycoF4j35ZibIKJ2fuhTauZwPo= |
| Xref | x330-a1.tempe.blueboxinc.net comp.programming.threads:479 |
Show key headers only | View raw
BlackLight wrote:
>
> I am currently attempting to use pthreads for a C++ project under
> Visual Studio 2005 in a Windows environment. I am currently using
> pthreadVCE2.lib library for my purposes. The things went quite
> flawlessly so far, but now, because of some more complex requirements
> for my application, I need some more intensive multithreaded design,
> and this also implies to have some mutex lock attempts on the same
> mutex from the same thread which already got that mutex (since the
> same function may be called by different threads, I cannot know
> whether that thread already acquired that mutex or not). Here I got
> the issue, with my program looking as deadlocked. After a whole day
> spent debugging my mutexes in the application, I simply tried to run
> the following code:
>
> #include <iostream>
> #include <pthread.h>
>
> int main()
> {
> pthread_mutex_t mutex;
> pthread_mutex_init (&mutex, NULL);
>
> pthread_mutex_lock (&mutex);
> std::cout << "Got lock 1\n";
> pthread_mutex_lock (&mutex);
> std::cout << "Got lock 2\n";
> pthread_mutex_unlock (&mutex);
> std::cout << "Released lock 1\n";
> pthread_mutex_unlock (&mutex);
> std::cout << "Released lock 2\n";
>
> return 0;
> }
>
> And, surprise, this code deadlocks as well on "Got lock 1" (while, in
> the same moment, the same code runs flawlessly on my Cygwin
> environment using gcc). My question is: is it an issue with pthread
> library, with the version I'm using, or with my Visual Studio
> project's options? How to get everything correctly reentrant?
Unless you don't want to redesign your code to avoid the need for
recursive locking, use PTHREAD_MUTEX_RECURSIVE and non-null attr
parameter for pthread_mutex_init(), see pthread_mutexattr_settype().
regards,
alexander.
Back to comp.programming.threads | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
pthread reentrance issue on Visual Studio BlackLight <blacklight86@gmail.com> - 2011-07-27 01:42 -0700 Re: pthread reentrance issue on Visual Studio Alexander Terekhov <terekhov@web.de> - 2011-07-27 12:39 +0200 Re: pthread reentrance issue on Visual Studio David Schwartz <davids@webmaster.com> - 2011-07-27 03:57 -0700
csiph-web