Subj : Re: VC++ 2005 beta1 fails with pthreads benchmark tests To : comp.os.ms-windows.programmer.nt.kernel-mode,comp.programming.threads From : Uenal Mutlu Date : Tue Apr 19 2005 10:41 am "Maxim S. Shatskih" wrote > Not much people use POSIX threads in Windows, and even lesser of them need > 100% POSIX compatibility. Most just need their code to work. Unfortunately the VC++2005 compiler generates buggy code. And, I would say the number of POSIX users increases more and more since people want go with proven international standards and see the source code of the library they use. The threading functions of MS are in my eyes a nightmare. There is no concept behind it since there are so many incompatible function calls to start a thread, for example: _beginthread, beginthreadex, CreateThread, AfxBeginThread, ... .... and each with its own thread proc format and limitations and/or differences... It simply is yelling for a standard. But, the real issue here is with compatibility of the compiler to the previous version, and code correctness. Ie. wheter the VC++2005 compiler can be used with 3rd party libraries, whether it is compatible to standards and to it's own previous version (VC++6), and whether it can successfully be used for real-world projects. It seems to me that VC++2005 is a complete new design, and not building on the VC++6 design. From a new version of a product I would expect that it builds on the goodies of the old version and improves it, fixes old bugs, adds the new items of the C/C++ standards etc. But here it is a complete new development. So I'm afraid it will take them some more years to make it usable for real world application development. > "Uenal Mutlu" wrote > > When the POSIX pthreads library for w32 release 2-2-0 > > (http://sources.redhat.com/pthreads-win32/) is compiled with VC++6 > > then it compiles and passes all the benchmark tests in the subdirectory > "tests". > > Also, VC++ 2005 beta 1 compiles the tests fine, but here the following > > tests fail in execution: > > > > # semaphore1.pass \ > > # condvar2.pass \ > > # condvar2_1.pass \ > > # mutex8.pass \ > > # mutex8n.pass \ > > # mutex8e.pass \ > > # mutex8r.pass \ > > # condvar3.pass \ > > # condvar3_1.pass \ > > # condvar3_2.pass \ > > # condvar3_3.pass \ > > # condvar4.pass \ > > # condvar5.pass \ > > # condvar6.pass \ > > # condvar7.pass \ > > # condvar8.pass \ > > # condvar9.pass \ > > # rwlock7.pass \ > > # rwlock8.pass \ > > # rwlock2_t.pass \ > > # rwlock3_t.pass \ > > # rwlock4_t.pass \ > > # rwlock5_t.pass \ > > # rwlock6_t.pass \ > > # rwlock6_t2.pass \ > > # spin4.pass \ > > > > Why are there such differences in execution of the generated code > > between VC++6 and VC++2005 ? Is this due to bugs in the beta1, > > or is this the result of general differences between the two products? > > Are there any compiler/linker switches for backwards "compatibility" to > VC++6? .