Q-сервер выполняет несколько дорогостоящих операций, запланированных каждую секунду
.z.ts:{0N!"Working...",string .z.P;{1000000?100;} each til 1000}
\t 1000
и предоставляет клиенту функцию f:{[n]{0N!"Called f...";100000000?100} each til n}
.И .z.ts
, и f
требуют больше 1 секунды для запуска на моем компьютере.
Когда я вызываю функцию f
в сеансе клиента q
hh:`:localhost:7000::;
hh(`f;3);
0N!"DONE";
ожидаемое поведениепо времени:
| server executes .z.ts
|
| client calls f on server
|
| server returns .z.ts
| server executes f (client request)
|
| server returns f
| server sends result of f to client on handle
| server executes .z.ts
|
Что на самом деле происходит
| server executes .z.ts
|
| client calls f on server
|
| server returns .z.ts
| server executes f (client request)
|
| server returns f ---- same as before until here
| server executes .z.ts ---- instead of sending result of f to client!!
|
| server returns .z.ts
| server sends result of f to client
|
Так что я не вижу «СДЕЛАНО» в сеансе клиента до того, как сервер снова выполнит .z.ts
после f
.
Как я могу обойти это?Я хочу явно указать серверу очистить дескриптор (то есть все, что находится в буфере, должно быть отправлено клиенту сразу после завершения f)
Спасибо за помощь