A bigger networking issue was select() (or the like). It used to be an
interesting kludge of running two processes inorder to do simoultaneous
read/write before that.
Right and select(2) was created by Sam and wnj during the 4.2 development. I've forgotten which sub-version (it was in 4.1c, but it might have been in b or a before that). There was a lot of arguing at the time about it's need; the multiple process solution was considered more 'Unix-like.' I remember one time have a few beers in my apartment with Sam while watching a football game and arguing about its usefulness. Adding select(2) was an example of where CSRG was adding things to UNIX for the DARPA community. IIRC: previous PDP-10 system had something like it and of course VMS had qio() which did not block; some of the users at an advisors meeting had wanted some alaong. I also remember after it ws prototyped, some people complaining that with select(2) people would start to right code that looped and waste cycles. BTW: sure enough, about a year or two later, X-Windows appears with its keyboard/mouse loop. The argument on a workstation (personal computer) was it did not matter. The argument on a vax or other typeshared machine, was that the CPU was being wasted and any type polling loop in users space was a bad idea.
FWIW: a few years later, System V (I think SRV3, but I've forgotten) introduced poll(2) as a reaction to BSD's select(2). [IMO: That was NIH if I ever saw it - similar but different because they could].
Clem