En la carga de los recursos... Cargando...

Loop de eventos

Escucha los acontecimientos, que vuelve cuando hay algunaWebSocketdatos legibles o tareas concurrentes, como por ejemplo:exchange.Go(), HttpQuery_Go(), etc. se han completado.

Si el objeto devuelto no es un valor nulo, elEventel contenido de la devolución es el tipo de activador de eventos. Por ejemplo, la siguiente estructura de valor de devolución:

{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}

objetos

Loop de evento EventLoop (tiempo muerto)

El parámetrotimeoutes la configuración de tiempo de espera, en milisegundos.timeoutespera que ocurra un evento antes de devolverlo si está establecido en 0, si es mayor que 0, establece el evento para esperar un tiempo de espera, y devuelve el evento más reciente inmediatamente si es menor que 0. tiempo de espera falsos Número

function main() {
    var routine_getTicker = exchange.Go("GetTicker")
    var routine_getDepth = exchange.Go("GetDepth")
    var routine_getTrades = exchange.Go("GetTrades")
    
    // Sleep(2000), if the Sleep statement is used here, it will cause the subsequent EventLoop function to miss the previous events, because after waiting for 2 seconds, the concurrent function has received the data, and the subsequent EventLoop listening mechanism started, it misses these events.
    // These events will not be missed unless EventLoop(-1) is called at the beginning of the first line of code to first initialize the EventLoop's listening mechanism.            

    // Log("GetDepth:", routine_getDepth.wait()) If the wait function is called in advance to retrieve the result of a concurrent call to the GetDepth function, the event that the GetDepth function receives the result of the request will not be returned in the EventLoop function.
    var ts1 = new Date().getTime()
    var ret1 = EventLoop(0)
    
    var ts2 = new Date().getTime()
    var ret2 = EventLoop(0)
    
    var ts3 = new Date().getTime()
    var ret3 = EventLoop(0)
    
    Log("The first concurrent task completed was:", _D(ts1), ret1)
    Log("The second concurrent task completed was:", _D(ts2), ret2)
    Log("The third concurrent task completed was:", _D(ts3), ret3)
    
    Log("GetTicker:", routine_getTicker.wait())
    Log("GetDepth:", routine_getDepth.wait())
    Log("GetTrades:", routine_getTrades.wait())
}
import time
def main():
    routine_getTicker = exchange.Go("GetTicker")
    routine_getDepth = exchange.Go("GetDepth")
    routine_getTrades = exchange.Go("GetTrades")
    
    ts1 = time.time()
    ret1 = EventLoop(0)
    
    ts2 = time.time()
    ret2 = EventLoop(0)
    
    ts3 = time.time()
    ret3 = EventLoop(0)
    
    Log("The first concurrent task completed was:", _D(ts1), ret1)
    Log("The second concurrent task completed was:", _D(ts2), ret2)
    Log("The third concurrent task completed was:", _D(ts3), ret3)
    
    Log("GetTicker:", routine_getTicker.wait())
    Log("GetDepth:", routine_getDepth.wait())
    Log("GetTrades:", routine_getTrades.wait())
void main() {
    auto routine_getTicker = exchange.Go("GetTicker");
    auto routine_getDepth = exchange.Go("GetDepth");
    auto routine_getTrades = exchange.Go("GetTrades");
    
    auto ts1 = Unix() * 1000;
    auto ret1 = EventLoop(0);
    
    auto ts2 = Unix() * 1000;
    auto ret2 = EventLoop(0);
    
    auto ts3 = Unix() * 1000;
    auto ret3 = EventLoop(0);
    
    Log("The first concurrent task completed was:", _D(ts1), ret1);
    Log("The second concurrent task completed was:", _D(ts2), ret2);
    Log("The third concurrent task completed was:", _D(ts3), ret3);
    
    Ticker ticker;
    Depth depth;
    Trades trades;
    routine_getTicker.wait(ticker);
    routine_getDepth.wait(depth);
    routine_getTrades.wait(trades);
    
    Log("GetTicker:", ticker);
    Log("GetDepth:", depth);
    Log("GetTrades:", trades);
}

La primera llamada a laEventLoop()función en el código inicializa el mecanismo para ese evento escuchado, y si el primeroEventLoop()El sistema subyacente envuelve una estructura de cola que almacena en caché un máximo de 500 devoluciones de llamada de eventos.EventLoop()La función no se llama a tiempo para sacarlos durante la ejecución del programa, las llamadas posteriores de eventos fuera de la caché 500 se perderán.EventLoop()función no afectan a la cola de caché del sistema subyacente WebSocket o las caché de funciones concurrentes tales comoexchange.Go(). Para estos cachés, todavía es necesario utilizar los métodos respectivos para recuperar los datos.EventLoop()Función para los datos que se han recuperado antes de laEventLoop()El objetivo principal de laEventLoop()La función principal de la red es la de notificar a la capa de estrategia que los nuevos datos de red han sido recibidos por el sistema subyacente.EventLoop()Por ejemplo, conexiones WebSocket, objetos creados porexchange.Go()Los datos de laEventLoop()La función soporta sólo el comercio en vivo. Escuchar eventos en el hilo principal cuando se llama desde la función principalmain()En las estrategias escritas en elJavaScriptLa lenguathreading.Thread()función crea un hilo, que también puede ser llamado en la función de ejecución del hilos, para escuchar eventos en el hilo actual.

En el caso de las empresas que se encuentran en una situación de riesgo, la información que se proporciona es la siguiente:

UUID Se sirve