On 11 Feb 2008, at 11:52, Michael Schnell wrote:

Questions:
- not in all instances the difference is provided. sometimes fork() is done unconditionally - Why is fork used at all. AFAIK, all systems can do vfork() (with _at_least_ the same performance as fork() and thus the difference is not needed. Regarding the function there is a difference between fork() and vfork() only if exec?() is _not_ called immediately afterwards, which seems to be the case in the FP RTL.

In some cases memory is still allocated between the fork and the exec. You cannot use vfork in such a case. That code still has to be rewritten so it does not allocate any memory.

- vfork seems to be used in BSD and SUNOS. Why just in these systems ?

Correction: it is only used on those systems if the RTL is libc- based. And the reason is that our thread variable implementation and its use in the syscall implementations conflicts with using vfork.

- when doing a non-MMU (µCLinux) architecture fork is not available. What is the best way of handling that situation ? (Should we introduce a UCLINUX OS flavor ?)

Does it already have posix_spawn?


Jonas_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to