int swift_vms_exec( void *W ) { PORTER_PTHREAD *p_porter = (PORTER_PTHREAD *)W; struct swift_task_node *swift_task = &p_porter->task; struct sniff_task_node sniff_task = {}; sniff_task.sfd = swift_task->sfd; sniff_task.type = swift_task->type; sniff_task.origin = swift_task->origin; sniff_task.func = sniff_vms_exec;//fix to use xxxx; sniff_task.last = false;//FIXME sniff_task.stamp = time(NULL); get_cache_data(swift_task->sfd, sniff_task.data, &sniff_task.size); #if 0 sniff_task.thread_id = ((PARTER_PTHREAD *)p_porter->mount)->thread_id; sniff_one_task_hit( (PARTER_PTHREAD *)p_porter->mount, &sniff_task ); p_porter->mount = ((PARTER_PTHREAD *)p_porter->mount)->next; #else PARTER_PTHREAD *p_parter = get_idle_thread( (PARTER_PTHREAD *)p_porter->mount ); sniff_task.thread_id = p_parter->thread_id; sniff_one_task_hit( p_parter, &sniff_task ); p_porter->mount = p_parter->next; #endif return 0; }
void ThreadManager::submit( Runable* job ) { Thread* thread = NULL; { ScopeGuard gurad(&mutex); thread = get_idle_thread(); } thread->set_job( job ); }