@ Blaazen : i have already try it, but no luck.
Make sure cthreads is in the uses clause in the main program code as the very first. I have also encountered the semaphore message when I forgot cthreads

The difference between Threads and Processes is just how much is shared (memory, file handles,...) between the tasks. Threads make communicating between tasks faster and easier (except for thread safety) because memory is shared. Processes need inter process communication to exchange data. If needed, processes are easier to kill than threads. A crashing process does not affect the other processes while a crash in a thread can affect the whole process. Performance-wise there is virtually no difference. Setting up a new process has typically more overhead than creating a new thread. Switching tasks can sometimes be faster than switching threads in multi-core systems because of shared data in caches that need to be synced.
To resume: if the tasks are fairly isolated and long lasting, use processes. If the tasks need to communicate a lot between them in various data formats or are very short lived, use threads.