4

pthreads を使用する gcc を介してコンパイルされた、Linux で独自の C++ ライブラリを使用しています (gcc で -lpthreads フラグを使用する必要があります)。その周りにラッパーがあり、ライブラリが複数のスレッドを使用していることを知っています。

ライブラリは複数のスレッドを動的に使用します。これを呼び出すと、20 対 1 のスレッドの間のどこにでも表示されます。しかし、私はタスクセットを使いたくありません。(他のプロセスを実行していて、システムにコアを管理させたい)。

実行可能ファイルにシングル スレッドの使用を強制する方法はありますか? コンパイル時または実行時のいずれか。ありがとう。

編集:タスクセットで実行可能ファイルを実行すると、 cat /proc//status から次のようになります。

状態: R (実行中) Tgid: 1623 Pid: 1623 PPid: 31002 TracerPid: 0 Uid: 500 500 500 500 Gid: 100 100 100 100 Utrace: 0 FDSize: 256 グループ: 100 VmPeak: 346528 kB VmSize: 345956 kB KB VMHWM:199816 KB VMRSS:188388 KB VMDATA:192120 KB VMSTK:128 KB VMEXE:656 KB VMLIB:12444 KB VMPTE:432 KB VMSWAP:0 kb shigq:2/62004 00000000000000000000000000000000000000000000000000000000000000000000 SigIgn: 0000000000000004 SigCgt: 0000000180000000 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: 02 Cpus_allowed_list: 1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 Voluntary_ctxt_switches: 3460 nonvoluntary_ctxt_switches: 24907

どうやら、シングルスレッドで実行できるようです。

4

3 に答える 3

0

プロセスの内部についてはあまり知りません。しかし、コード ベースを拡張して、複数のスレッドの作成を制限しないでください。スレッドのカウントを維持し、カウントが 1 を超えたときにプロセス内のスレッドの作成を停止できます。

于 2016-01-21T06:29:47.057 に答える