Если вы не получаете никаких ошибок со слоя C, проверьте файл журнала Postgresql, чтобы увидеть, есть ли там ошибки.
Мои первоначальные предположения были бы такими:
a) Слой C путает соединения между потоками и делает две вещи с одним и тем же соединением одновременно.
или b) Слой C не освобождает соединения, когда с ними сделано, поэтому вы выходите за пределы памяти.
В любом случае, вам действительно нужно найти ошибку, прежде чем вы сможете ее исправить.
Сам Postgresql будет обрабатывать множество одновременных соединений, хотя вы, вероятно, захотите объединить их, чтобы сократить время установки / разрыва каждого сеанса.