我有一个使用不同线程来制作不同类型作业的进程。
一个这样的线程必须以非阻塞方式发送推送通知(因此,由于多接口和 SSL 支持,我将使用 libcurl)。主线程必须将作业传递给工作人员,我考虑使用 apache apr 消息队列进行消息传递。因为在同一个线程中,我必须检查传入的消息和 curl 句柄的可用性,我认为我将使用这样的东西:
while (1)
{
while (apr_queue_try_pop(queue, &msg) == APR_SUCCESS)
{
// do something with the message
}
// perform a select or poll in the curl multi handle
// treat the handles that are available for reads/writes
}
在线程启动函数中。
这有点忙等待,有更好的解决方案吗?
使用 C99 和 Linux x86_64。