Замедление при вызове функций tpinit и tpterm в многопоточной программе - PullRequest
0 голосов
/ 10 ноября 2019

tpinit и tptern функция смокинга требует времени. Он в основном используется в каждом запросе клиента присоединиться и покинуть приложение. мы наблюдали большую медлительность, когда число запросов больше от многопоточного клиентского процесса.

Мы пытаемся увеличить виртуальное ядро ​​в машине, но все еще сталкиваемся с той же проблемой.

TPINIT   *   tpinitbuf;
if((tpinitbuf = (TPINIT *)tpalloc("TPINIT",(char *)NULL,TPINITNEED(16))) == (TPINIT *)NULL)
{
    printf("ERROR IS:: %s\n", tpstrerror(tperrno));
    return NULL;
}
tpinitbuf->flags = TPMULTICONTEXTS;
tpinit(tpinitbuf); //this function is taking time. 
tpgetctxt(&ctxt, 0);
tpfree ((char *) tpinitbuf) ; 
retVal=tpcall("MY_SERVICE",(char *)buf1,0,(char **) &buf2,&size,0L);
tpterm(); // this function is taking time.

В идеале tpinit, tpterm должно занимать около 50 миллисекунд, но при большом количестве запросов это занимает около 1,3 с.

...