Есть некий клиентский API к одной системе, сделанный на С, мне необходимо сделать DLL, с помощью которой могли бы работать несколько клиентов одновременно

. Сама по себе DLL готова, но при работе с ней происходят случайные глюки при подключении к серваку. Судя по логам сервака, он паникует из-за того, что считает, что к нему пытается подключится один и тот-же процесс

. Сейчас решил добавить в свою DLL многопоточность, думаю что это должно помочь. Но появлась проблема — как правильно организовать потоки?
В один поток нужно полностью закинуть работу с серваком, которая выглядит следующим образом:
— login;
— action (send message, get reply, post event, ...);
— logout.
Action может вызываться произвольное количество раз и в произвольном порядке.
Есть идея организовать управление потоком с помощью ивентов (по одному ивенту на каждый action + один для logout). Но если таких потоков потребуется создать порядка тысячи — то как сохранять информацию о всех ивентах? И есть ли ограничение на их количество?
Ну а вот собственно и сам вопрос: правильным ли путем я продвигаюсь? Может у кого-нибудь есть идеи, как можно победить такие завороты?
Буду рад любой помощи.