On Nov 21 08:16, mike marchywka wrote: > On 11/21/09, Corinna Vinschen <corinna-cyg...@cygwin.com> wrote: > > On Nov 20 14:04, mike marchywka wrote: > >> The OS is the only place you can when the threads are in different > >> processes unknown to each other. Or, can two different processes share > >> the > >> same thread? > > > > No, never. If there is a concurrency problem with the envionment, it's > > between threads of the same process. In that case, we can make getenv, > > setenv and friends thread-safe, but it's still actually a problem of the > > application, given that getenv, setenv and friends are not thread-safe > > per POSIX. See > > http://www.opengroup.org/onlinepubs/9699919799/functions/setenv.html > > http://www.opengroup.org/onlinepubs/9699919799/functions/getenv.html > > http://www.opengroup.org/onlinepubs/9699919799/functions/unsetenv.html > > > > well, the question was somewhat rhetorical/disingenuous but > I don't see how in the general case then the OS can allow two > simultaneous processes to modify windoze env variables in a way > that corrupts them. The app is responsible for itself but I'm not sure > what it can do with respect to other processes. If you wanted an emulation > layer to be safe you are still limited by the OS( but you may have already > known that LOL).
The environment, even the so-called Windows environment, is just a memory blob in the application's memory space. It's not shared between processes or something, only inherited. If it's corrupted, the reason is that the environment has been scrambled in this process, or in one of the parent processes prior to the fork/exec calls. The OS has usually nothing to do with that, and as far as the Windows environment of a process is concerned, the Windows system calls to change the environment *are* thread-safe. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple