如何在保险丝中正确添加螺纹

时间:2012-03-12 06:03:42

标签: c linux fuse

我正在开发基于FUSE的文件系统项目。我想在其中添加一些预读。所以我创建了一个线程来处理这样的任务,但似乎我做的比我想的要慢。(即使我只是添加一个空闲的线程,它使我的程序变得比没有它更慢,但是没有发生当我将此功能添加到我的服务器程序时,它不使用保险丝)

我没有简单地使用fuse_main函数,而是我阅读了sshfs的代码并尝试使用以下函数自行初始化它,

fuse_parse_cmdline
fuse_mount
fcntl
fuse_new
fuse_daemonize
fuse_set_signal_handlers
fuse_loop_mt

并且没有添加线程,它运行得很好,但在我添加此线程后

pthread_create(&tid, NULL, test, NULL); // function test is just a while(1){}

它变慢(读取一个100M文件,没有这个线程它是40s,并且它已接近100s)

这是关于schedparam还是别的什么事情? 希望你们能给我一些建议,比如我需要检查的东西。

再次感谢。

1 个答案:

答案 0 :(得分:3)

您的线程忙于等待,这意味着它将尽可能多地使用CPU电源。您可能希望在线程中添加一点延迟,以便让其他线程和进程运行:

while (1)
{
    usleep(1000);  /* Sleep for one millisecond */
}