I have a program that uses pthreads for multitasking. I want to use OpenMP for making some of these threads to perform faster (1 OMP parallel section in main(), 1 OMP parallel section in one of the thread's function). However, when I use OpenMP's parallel sections in more than 1 thread, I generally experience deadlocks! Sometimes it works, sometimes the program freezes when entering the parallel section of the thread's function.
- I set OMP_DYNAMIC to TRUE for being able to use omp_set_num_threads() function.
- I am using gcc-4.2.2 with openmp support
If I use OpenMP parallelism just in the main(), it works without any problem. If I also use it in the thread's function in addition to main(), most of the time, deadlock occurs. It seems that if more than one threads uses OpenMP simultaneously deadlock occurs.
Each of these threads will use the same number of OpenMP threads, and they run asynchronously. There is no synchronization between them. What can be the source of the problem?