Re: [HACKERS] VC2005 build and pthreads
Martijn van Oosterhout wrote: -- Start of PGP signed section. On Sun, Jan 28, 2007 at 02:05:41PM +0100, Magnus Hagander wrote: Anyway. We hard-code thread-safety to on for Win32, because win32 is a threaded platform in general - almost everything can be exposed to threading even if they don't want it. For example a VB program that has no threading at all can still run with multiple threads because of the framework. It'd be nice if we could do the same for some Unix platofrms like Linux. The C library uses threads internally, and there's no actual downside to enabling thread safety there, except removing a few failure modes. I was not aware this was true on Linux. -- Bruce Momjian [EMAIL PROTECTED] EnterpriseDBhttp://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---(end of broadcast)--- TIP 4: Have you searched our list archives? http://archives.postgresql.org
Re: [HACKERS] VC2005 build and pthreads
Bruce Momjian [EMAIL PROTECTED] writes: Martijn van Oosterhout wrote: It'd be nice if we could do the same for some Unix platofrms like Linux. The C library uses threads internally, and there's no actual downside to enabling thread safety there, except removing a few failure modes. I was not aware this was true on Linux. It uses threads at least for the POSIX AIO calls--I'm not sure what else. -Doug ---(end of broadcast)--- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly
Re: [HACKERS] VC2005 build and pthreads
Douglas McNaught [EMAIL PROTECTED] writes: Bruce Momjian [EMAIL PROTECTED] writes: Martijn van Oosterhout wrote: It'd be nice if we could do the same for some Unix platofrms like Linux. The C library uses threads internally, and there's no actual downside to enabling thread safety there, except removing a few failure modes. I was not aware this was true on Linux. It uses threads at least for the POSIX AIO calls--I'm not sure what else. I think the real point is that you get the same C library whether you ask for thread safety or not, and it does internal locking to protect itself against multi threads anyway. So arguably there's no point in building a thread-unsafe version of libpq. But having said that, 99.99% of Linux use is based on pre-built RPMs, and the RPM packagers all understand how to make this decision, so it's really not our problem to fix. regards, tom lane ---(end of broadcast)--- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq
Re: [HACKERS] VC2005 build and pthreads
Douglas McNaught [EMAIL PROTECTED] writes: It uses threads at least for the POSIX AIO calls--I'm not sure what else. On that tangent, is that still true or is it only for older kernels that it's true? I was under the impression newer kernels implemented the aio interface but others seem to think it's not the case and glibc still emulates it with threads. Looking up the truth of the situation has been on my mental todo list for a while. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com ---(end of broadcast)--- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq
Re: [HACKERS] VC2005 build and pthreads
On Mon, Feb 05, 2007 at 11:09:06AM -0500, Tom Lane wrote: I think the real point is that you get the same C library whether you ask for thread safety or not, and it does internal locking to protect itself against multi threads anyway. So arguably there's no point in building a thread-unsafe version of libpq. The underlying issue is that there is no way to be sure a program will not have threads. Just because you didn't compile against pthreads, don't mean there won't be any threads. An example being a gethostbyname() that loads a threaded version of an LDAP library, for example. For programs it doesn't matter, but for shared-libraries you never know whether you're going to be called from the main thread of execution or not, and if you're not you're buggered. But having said that, 99.99% of Linux use is based on pre-built RPMs, and the RPM packagers all understand how to make this decision, so it's really not our problem to fix. That's true, but I think it would be worthwhile to invert the switch to be --disable-thread-safety, since the number of people who don't understand the problem far outweigh the cost of the switch. Have a nice day, -- Martijn van Oosterhout kleptog@svana.org http://svana.org/kleptog/ From each according to his ability. To each according to his ability to litigate. signature.asc Description: Digital signature
Re: [HACKERS] VC2005 build and pthreads
Martijn van Oosterhout kleptog@svana.org writes: That's true, but I think it would be worthwhile to invert the switch to be --disable-thread-safety, since the number of people who don't understand the problem far outweigh the cost of the switch. I'd vote against that unless it were done only for Linux, and personally I think a platform-dependent default for this might be unreasonably confusing. regards, tom lane ---(end of broadcast)--- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly
Re: [HACKERS] VC2005 build and pthreads
On Mon, Feb 05, 2007 at 11:34:23AM -0500, Tom Lane wrote: Martijn van Oosterhout kleptog@svana.org writes: That's true, but I think it would be worthwhile to invert the switch to be --disable-thread-safety, since the number of people who don't understand the problem far outweigh the cost of the switch. I'd vote against that unless it were done only for Linux, and personally I think a platform-dependent default for this might be unreasonably confusing. Well, it's already platform specific, Win32 removes the option altogether (apparently). Which would be another option. However, it only trips people up occasionally, so I'm not going to push it. Have a nice day, -- Martijn van Oosterhout kleptog@svana.org http://svana.org/kleptog/ From each according to his ability. To each according to his ability to litigate. signature.asc Description: Digital signature
Re: [HACKERS] VC2005 build and pthreads
Martijn van Oosterhout wrote: On Mon, Feb 05, 2007 at 11:34:23AM -0500, Tom Lane wrote: Martijn van Oosterhout kleptog@svana.org writes: That's true, but I think it would be worthwhile to invert the switch to be --disable-thread-safety, since the number of people who don't understand the problem far outweigh the cost of the switch. I'd vote against that unless it were done only for Linux, and personally I think a platform-dependent default for this might be unreasonably confusing. Well, it's already platform specific, Win32 removes the option altogether (apparently). Which would be another option. Visual C build only, not the MingW build. It still has the option. The win32 binary distribution sets it though. //Magnus ---(end of broadcast)--- TIP 2: Don't 'kill -9' the postmaster
Re: [HACKERS] VC2005 build and pthreads
On Sun, Jan 28, 2007 at 02:05:41PM +0100, Magnus Hagander wrote: Anyway. We hard-code thread-safety to on for Win32, because win32 is a threaded platform in general - almost everything can be exposed to threading even if they don't want it. For example a VB program that has no threading at all can still run with multiple threads because of the framework. It'd be nice if we could do the same for some Unix platofrms like Linux. The C library uses threads internally, and there's no actual downside to enabling thread safety there, except removing a few failure modes. Have a nice day, -- Martijn van Oosterhout kleptog@svana.org http://svana.org/kleptog/ From each according to his ability. To each according to his ability to litigate. signature.asc Description: Digital signature
Re: [HACKERS] VC2005 build and pthreads
On Fri, Jan 26, 2007 at 10:10:20PM +0100, Magnus Hagander wrote: I would like to build pg on VC2005. How do I use pthreads that is mentioned in the README file. Do I need the DLL? Sources? LIB? Where do I install or copy them.. Err, pthreads is a threads library for Unix, I don't think Windows has that, nor can I think of a situation where you'd need to worry about threads anyway? There is a pthreads for win32 as well. However, you don't need it to build, unless you build ecpg. I forgot to update the README when I put that patch in .-) Actually you can build ecpg without pthreads as well, but you lose thread-safety. The problem is that ecpg and libpq do different things on Windows if you define ENABLE_THREAD_SAFETY. ENABLE_THREAD_SAFETY is set to 1 in pg_config.h.win32, with it being defined, ecpg needs the pthreads libraries, while libpq uses the stub functions from pthread-win32.c. Libpq can do that because it doesn't use pthread_(get|set)specific. If we implemented those functions by means of the native Windows API as well, they could also be used by ecpg and we would not need the pthread libs on Windows anymore. Magnus, can we? ;-) Joachim ---(end of broadcast)--- TIP 5: don't forget to increase your free space map settings
Re: [HACKERS] VC2005 build and pthreads
Joachim Wieland wrote: On Fri, Jan 26, 2007 at 10:10:20PM +0100, Magnus Hagander wrote: I would like to build pg on VC2005. How do I use pthreads that is mentioned in the README file. Do I need the DLL? Sources? LIB? Where do I install or copy them.. Err, pthreads is a threads library for Unix, I don't think Windows has that, nor can I think of a situation where you'd need to worry about threads anyway? There is a pthreads for win32 as well. However, you don't need it to build, unless you build ecpg. I forgot to update the README when I put that patch in .-) Actually you can build ecpg without pthreads as well, but you lose thread-safety. The problem is that ecpg and libpq do different things on Windows if you define ENABLE_THREAD_SAFETY. ENABLE_THREAD_SAFETY is set to 1 in pg_config.h.win32, with it being defined, ecpg needs the pthreads libraries, while libpq uses the stub functions from pthread-win32.c. Libpq can do that because it doesn't use pthread_(get|set)specific. If we implemented those functions by means of the native Windows API as well, they could also be used by ecpg and we would not need the pthread libs on Windows anymore. Magnus, can we? ;-) Absolutely, I'll be happy to test your patch :) Anyway. We hard-code thread-safety to on for Win32, because win32 is a threaded platform in general - almost everything can be exposed to threading even if they don't want it. For example a VB program that has no threading at all can still run with multiple threads because of the framework. //Magnus ---(end of broadcast)--- TIP 2: Don't 'kill -9' the postmaster
Re: [HACKERS] VC2005 build and pthreads
On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote: Folks, I would like to build pg on VC2005. How do I use pthreads that is mentioned in the README file. Do I need the DLL? Sources? LIB? Where do I install or copy them.. Err, pthreads is a threads library for Unix, I don't think Windows has that, nor can I think of a situation where you'd need to worry about threads anyway? Have a nice day. -- Martijn van Oosterhout kleptog@svana.org http://svana.org/kleptog/ From each according to his ability. To each according to his ability to litigate. signature.asc Description: Digital signature
Re: [HACKERS] VC2005 build and pthreads
pthreads in needed to buold PG in vc++ 2005 please read pgsql/src/tools/msvc/README Have a nice day. On Fri, 2007-01-26 at 21:47 +0100, Martijn van Oosterhout wrote: On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote: Folks, I would like to build pg on VC2005. How do I use pthreads that is mentioned in the README file. Do I need the DLL? Sources? LIB? Where do I install or copy them.. Err, pthreads is a threads library for Unix, I don't think Windows has that, nor can I think of a situation where you'd need to worry about threads anyway? Have a nice day. ---(end of broadcast)--- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate
Re: [HACKERS] VC2005 build and pthreads
Martijn van Oosterhout wrote: On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote: Folks, I would like to build pg on VC2005. How do I use pthreads that is mentioned in the README file. Do I need the DLL? Sources? LIB? Where do I install or copy them.. Err, pthreads is a threads library for Unix, I don't think Windows has that, nor can I think of a situation where you'd need to worry about threads anyway? There is a pthreads for win32 as well. However, you don't need it to build, unless you build ecpg. I forgot to update the README when I put that patch in .-) If you want it, it's on ftp://sources.redhat.com/pub/pthreads-win32. IIRC, that's actually mentioned in the README file. You need the lib and headers. //Magnus ---(end of broadcast)--- TIP 6: explain analyze is your friend