Вопрос к разработчикам. Как правильно делать синхронизацию.

 
Столкнулся с проблемой синхронизации потоков в dll.
Могут ли разработчики дать разъяснения как правильно это делать для терминала.
  В настоящее время система работает только при полной блокировке используемой функции через мьютекс.
Использование критических секций вызывает панику у терминала, хотя критические секции на порядок эффективнее, да и кроспрцессная синхронизация здесь не нужна.
Заранее благодарен.