コード例 #1
0
ファイル: iolayer.c プロジェクト: snivel/libevlite
int32_t iolayer_shutdowns( iolayer_t self, sid_t * ids, uint32_t count )
{
    uint8_t i = 0;
    int32_t rc = 0;
    struct iolayer * layer = (struct iolayer *)self;

    for ( i = 0; i < layer->nthreads; ++i )
    {
        struct sidlist * list = sidlist_create( count );
        if ( list == NULL )
        {
            continue;
        }
        sidlist_adds( list, ids, count );

        // 参照iolayer_shutdown()

        // 跨线程提交批量终止任务
        int32_t result = iothreads_post( layer->group, i, eIOTaskType_Shutdowns, list, 0 );
        if ( unlikely(result != 0) )
        {
            sidlist_destroy( list );
            continue;
        }

        rc += count;
    }

    return rc;
}
コード例 #2
0
ファイル: message.c プロジェクト: shangzuoyan/libevlite
int32_t message_add_receivers( struct message * self, sid_t * ids, uint32_t count )
{
    if ( self->tolist == NULL )
    {
        self->tolist = sidlist_create(count);
        if ( unlikely(self->tolist == NULL) )
        {
            return -1;
        }
    }

    return sidlist_adds( self->tolist, ids, count );
}