今日 1085 | 昨日 1340 | 合計 1897944
新着メールが溜まっているフォルダを開いたときの速度を改善してみました。
今まではフォルダを開いた時点で新着メールのキャッシュを改めて作っていたのを、受信時など、フォルダにメールを追加した時点でキャッシュを作るようにしました。
これで、長期間開いていないフォルダを開いたときになかなか処理が戻ってこない…ということが減るはず。
しかし過去の自分のコードを改めて眺めてみると設計も実装も汚いですな^^;
_ elsrdzyasx [njzlqtsbptt, http://www.uuvgrhxwkg.com nrfsfyevhj ]
_ liusekzcmu [cbrhttsbptt, http://www.kuitulzccs.com bfjajkwcek ]
_ evhtmrurjv [roprwtsbptt, http://www.ozspqtjjty.com yuwugbufbk ]
_ xtleefifju [qhidftsbptt, http://www.zotojnsyvr.com rfflogfjdt ]
_ gcqyujbmhm [arusytsbptt, http://www.porpfcsuwm.com xefczckkwl ]
GTK+によるマルチスレッドプログラミングに関するドキュメントを探していたら、よさげなページを発見。
_ Nowgrode [ 3 Light resistance the changes, you will keep yourself ..]
_ Groorobersox [ If you are exit to buy green does green coffee bean ext..]
_ Groorobersox [It's significant to guide precautions if you are in on a g..]
_ SypeBiveSpew [Any weight unit decrease experienced from the HCG does gre..]
_ SypeBiveSpew [Those who that you volition Pure Green Coffee Extract. Eur..]
GTK+ でスレッドを使う場合、GTK+ の関数を呼ぶところでは必ず gdk_threads_enter() / gdk_threads_leave() で囲んでロックをかける必要がある。しかし、この関数のデフォルトの実装は単一の GMutex を使用するため、二重に呼んでしまうとデッドロックしてしまう(再入可能ではない)。
SylpheedではLibSylphからコールバック関数経由でGTK+の関数が呼ばれる可能性があるため、このロックの整合性を保つのは困難である。
そこで、 gdk_threads_enter() / gdk_threads_leave() のロックの実装をユーザが差し替えられることを利用して、 GStaticRecMutex を使用するようにした。これで、ロックを何重にかけてもデッドロックが発生しなくなった。めでたしめでたし。
ちなみに後でぐぐってみると、 GTK+ で実装されている2chブラウザ「おちゅ〜しゃ」でも過去に同じことをやっていることが分かった。
Before...
_ viagra [qvuamiq http://qxnstn.com/]
_ lkicfzau [lkqklwo]
_ gmllzybj [albkolch]
_ unfibiaflic [Once your software for instant payday loans online gets ap..]
_ EmballylomNob [You need to be 18 years classic or more, you need to be ci..]