gpt4 book ai didi

c - 释放 C 中阻塞流的缓冲区

转载 作者:太空狗 更新时间:2023-10-29 15:39:15 24 4
gpt4 key购买 nike

在多线程应用程序中,我需要取消线程。其中一些使用 flockfile 显然不是 pthread_cancel 的有效取消点的机制。我设法通过使用 pthread_kill 发送 SIGUSR1 信号来终止线程,迫使它们在信号处理程序中 pthread_exit。清理分配的内存在我的例子中被证明很简单(它都在堆栈上),但我当然不能关闭文件流。有什么方法可以释放缓冲区或移除锁吗?在我的系统上,每个未关闭的缓冲区占用 16KB 的内存,这些内存会快速累积。

最佳答案

不要强行杀死线程,您应该向它们传达“完成”消息,然后线程可以在退出干净之前自行清理。

您已经在使用 SIGUSR1 执行消息传递部分,因此您需要跟踪打开的句柄,以便您可以从信号处理程序中解锁/释放任何正在使用的句柄

关于c - 释放 C 中阻塞流的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com