void read(const int start_offset,int size,void* buffer) { sem_t sem; sem_init(&sem,0,0); TaskQueue::TaskItem item; item.start_offset=start_offset; item.size=size; item.buffer=buffer; item.sem=&sem; w_queue.queue_add(item); sem_wait(&sem); sem_destroy(&sem); return; }