X.orgソフトウェアの一部はマルチスレッドで構成されていますか?

X.orgソフトウェアの一部はマルチスレッドで構成されていますか?

私が知る限り、すべてのコマンドラインシェルはマルチスレッドではありません。特に、「タスク制御」(Control-Z bg、、など)をサポートするシェルもfg機能(たとえばfork、信号、パイプ、PTY)を介してexecこれを行います。

Emacsは「同時に多くのことを行う」ことができますが、マルチスレッドではありません。 (再び、外部プログラムをたくさんフォークして実行し、信号、パイプ、PTYを使用してこれらの外部プログラムと通信します。)

私の質問は、X11プロトコル(X.org)の基本的な実装がサーバーまたはクライアントライブラリのUnixスレッドを使用することです。

それでは、おおよそいつから(またはその祖先であるXFree86またはXFree86の祖先)この仕事を始めましたか?

ベストアンサー1

$ ps -eLf
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  0    1 19:25 ?        00:00:00 init [4]
...    
root      1699     1  1699  0    1 19:25 ?        00:00:00 /usr/bin/kdm
root      1701  1699  1701  8    2 19:25 tty10    00:13:10 /usr/bin/X :1 vt10 ...
root      1701  1699  1703  0    2 19:25 tty10    00:00:00 /usr/bin/X :1 vt10 ...
root      1706  1699  1706  0    1 19:25 ?        00:00:00 -:1
root      1707  1699  1707  0    2 19:25 tty9     00:00:02 /usr/bin/X :0 vt9 ...
root      1707  1699  1710  0    2 19:25 tty9     00:00:00 /usr/bin/X :0 vt9 ...
root      1713  1699  1713  0    1 19:25 ?        00:00:00 -:0
....

私はそれがあなたの質問に答えると思います。

それでも問題はいくつかを一緒に混ぜるようです。マルチスレッドはfork()/を使用しませんexec()。スレッドは同じアドレス空間を共有するので、異なるプロセスを実行したい場合は、同じアドレス空間にアクセスしたくないでしょう。外部プログラム(特に言及したシェル)を使用しないことにした場合は、すべての機能を再コーディングする必要があります。

マルチスレッドはすべての問題を解決するわけではありません。実際、これは主に並列性の問題のみを解決します。確認ウィキページ良い簡単な概要です。プログラムをマルチスレッドにしてもそれは良くなるわけではなく、ほとんどの場合、同期コード(存在する場合)のバグによって状態が悪くなります。

おすすめ記事