Realized the communication between a multi-threaded video server and multiple clients over TCP in C. 2. Developed a dynamic thread pool management, and a thread synchronization by applying mutexs and condition variables on the server side through Pthreads. 3. Designed a monitor abstract data type by applying a customized user-level synchronization mechanism which used the kernel synchronization features provided by Linux kernel module.