User-level threads have been used to implement migratable MPI processes. This is a better strategy to implement load balancing mechanisms. That is because, in general, these threads are faster to create, manage and migrate than heavy processes and kernel threads. However, they present some issues concerning private data because they break the private address space that MPI programs typically assume. In this paper, we propose a new approach to privatize data in user-level threads. This approach is based on Thread Local Storage, which is used by kernel threads. We apply this technique to enable MPI processes based on user thread to execute a wider range of parallel programs. We show that this alternative has a more efficient context switch and lower migration cost than other approaches.