我正在开发基于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还是别的什么事情? 希望你们能给我一些建议,比如我需要检查的东西。
再次感谢。
答案 0 :(得分:3)
您的线程忙于等待,这意味着它将尽可能多地使用CPU电源。您可能希望在线程中添加一点延迟,以便让其他线程和进程运行:
while (1)
{
usleep(1000); /* Sleep for one millisecond */
}