int main() { int i; init_async(); for (i = 0; i < 30; i++) { AsyncData* d = (AsyncData*) malloc(sizeof (AsyncData)); d->key = i; d->value = i; int c = i; driver_async((unsigned int*) & c, io_test, d, NULL); } printf("the result\n"); pthread_t main_thread = pthread_self(); pthread_exit(&main_thread); return 0; }
h2o_multithread_queue_t *h2o_multithread_create_queue(h2o_loop_t *loop) { h2o_multithread_queue_t *queue = h2o_mem_alloc(sizeof(*queue)); *queue = (h2o_multithread_queue_t){}; #if H2O_USE_LIBUV uv_async_init(loop, &queue->async, (void *)queue_cb); #else init_async(queue, loop); #endif pthread_mutex_init(&queue->mutex, NULL); h2o_linklist_init_anchor(&queue->receivers.active); h2o_linklist_init_anchor(&queue->receivers.inactive); return queue; }
static void init(naming::id_type const& gid, std::size_t numsteps, naming::id_type const& val) { init_async(gid, numsteps, val).get(); }
static void init(hpx::naming::id_type const& gid, std::string const& datafilename, dimension const& dimx, dimension const& dimy, dimension const& dimz) { init_async(gid, datafilename, dimx, dimy, dimz).get(); }
static void init(hpx::naming::id_type const& gid, std::string datafilename, dimension const& dim, std::size_t num_nodes) { init_async(gid, datafilename, dim, num_nodes).get(); }
static void init(hpx::naming::id_type const& gid, std::size_t idx, std::size_t grainsize, std::vector<std::pair<std::size_t, std::size_t> > const& edgelist) { init_async(gid, idx, grainsize, edgelist).get(); }
static void init(hpx::naming::id_type const& gid, std::string const& datafile, std::string const& symbolic_name, std::size_t num_instances) { init_async(gid, datafile, symbolic_name, num_instances).get(); }