OpenSSL:在阻止BIO_do_accept的同时唤醒线程

时间:2014-07-08 01:38:21

标签: c openssl pthreads blocking

我有一台服务器使用BIO_do_accept的阻塞实现接受多个客户端,每次客户端连接时,BIO_do_accept返回,我创建一个新线程来处理连接,并在主线程中再次调用BIO_do_accept以接受更多连接

但是,我需要能够停止被BIO_do_accept阻止的线程。我想到的唯一解决方案是使用非阻塞实现,当函数返回时,检查一个全局变量以确定线程是否需要退出,如果是空闲内存并使用pthread_exit,如果不是,用pthread_yield运行另一个线程。

我认为我不能使用信号因为我需要释放BIO对象,所以从信号处理程序中释放内存和pthread_exit都可能不好。

有没有人知道更好的解决方案,或者全局变量/ polling / pthread_exit的组合真的是最好的解决方案吗?

0 个答案:

没有答案