Of course you do. Any data structure that will be accessed from different threads must *always* be controlled by syncronization objects. Consider a simple array of chars. If one thread is copying the array while the other is reading it - what do you think will happen? Corruption. Pure and simple.