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; }
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 ); }