this ain't exactly true. Currently in MT environment the task of data
separation is pushed to the TSRM by using TLS. Now, if TSRM is
reimplemented in a fashion that the data is not stored by using TLS but
other mechanism and cooperative multitasking is not something that
can't be done.
The truth is that userland is isolated from the process data space so for
it it won't make a difference. It's just that using threads for
separation is
the easiest thing (after process per script). The good thing is that TSRM
is an abstraction for its clients.
How could we make this work in the absence of TSRM, though? I'm operating
under the assumption that any solution would need to work the same way
outside the auspices of TSRM. With process forking you'd be talking about
pretty complex inter-process signaling to try and accomplish equivalent
multitasking. This doesn't seem at all feasible to me on first glance
(though I've been wrong plenty of times in the past).