1

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ファイルを読み取り、このスレッドがなければ40秒で、それがあると100秒近くになります)

これは schedparam または何か他のことについて何かしますか? 確認すべき点など、アドバイスをいただければ幸いです。

再度、感謝します。

4

1 に答える 1

3

スレッドは待機中です。つまり、スレッドは可能な限り多くのCPUパワーを使用します。他のスレッドやプロセスも実行できるように、スレッドに少し遅延を追加することをお勧めします。

while (1)
{
    usleep(1000);  /* Sleep for one millisecond */
}
于 2012-03-12T07:25:31.177 に答える