标签: c linux multithreading timer
我有一个链表,我经常在其中插入节点。
对于每个节点,插入后,节点内的元素需要在5秒内更新,如果5秒内没有更新,则需要删除该节点。
我目前的设计是触发一个分离的线程,例程是:
func{ sleep(5); flag=check_updating(node); if(flag == false) delete(node); }
这个设计是否可以?
有更好的设计吗? 谢谢!
答案 0 :(得分:1)
使用线程是处理计时器的一种非常繁重的方式,但如果你不太关心性能,我认为它可以正常工作。
我会说使用类似libevent或libev的内容,并在这些系统中排列您的计时器。他们能够毫不费力地满足您的时间需求。
答案 1 :(得分:0)
取决于列表的大小。如果以非常快的速度插入节点,则创建和销毁线程会很慢,甚至可能达到系统最大线程数。