On Nov 22, 2004, at 11:33 PM, Bill Kelly wrote: > To the best of my (limited) knowledge, #send and #recv > are lower level than syswrite(). *Assuming* #send and #recv > translate in Ruby to the Berkeley socket system functions > of the same names. (I have not looked at ruby's implementation > of #syswrite and #send / #recv... so.. I could be mistaken. I'm > just judging by their name and corresponding behavior.) My big confusing stems from both of these approaches. Isn't one of the big advantages of using a thread design that you can use the higher level IO calls without fear of blocking? > What if you try freezing "c" ? Maybe c.freeze before the > printout at the top verifying it's correct... Perhaps another > thread is unexpectedly modifying it? This is really the key to the solution, whether through freezing or not. If the String is being modified externally, you have to isolate the chunk of your code doing it. Ruby doesn't randomly modify the contents of your variables, we hope. James Edward Gray II