我在C中有两个函数,它们将由c ++线程调用(每个函数一个线程)。我希望阻止一个,当另一个正在运行时,反之亦然。我该如何解决这个问题?
这里是简历:
int adin_mem_read(SP16 *buf, int sampnum, int client_id){
//(.....)
//lock writing_buffer
memcpy(&buf[real_size], stream_buffer_[client_id].data_ + stream_buffer_[client_id].p_read, stream_buffer_[client_id].p_write - stream_buffer_[client_id].p_read);
//unlock writing_buffer
//(....)
}
和
int writing_bufer(struct Stream_Bufer * buffers, const char *data, int nbytes, int end_stream, int begin_stream) {
//(...)
//lock adin_mem_read()
memcpy(buffers->data_ + buffers->p_write, data, nbytes);
buffers->p_write += nbytes;
//(...)
//unlock adin_mem_read()
}