トップ «前の日記(2010-09-09) 最新 次の日記(2010-09-11)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2010-09-10

_ Win32OLEマルチスレッド対応

できた(win32olepatch-2.txt)。

rb_set_end_procを使えば良いのだった。というか、助田さんの助言を取り損なって再発見してしまった。これなら、スクリプト終了後かつCランタイムライブラリのexit呼び出し前に介入できる。

あと、アパートメントの初期化をしたかどうかを保持するTLS(g_ole_initializedを流用)に、__declspec(thread)を利用したので、mingwが対応していなければそこをTLS APIを利用するように修正する必要があります。

が、テストを動かしてわかったけど、rb_set_end_procが動くのが先か、testの実行が先か問題とかあるような。

_ 良くない名前(事例)

上のパッチにRELEASE_GLOBALというマクロを定義したが最悪の名前だ。グローバルインターフェイスから、つい名前をつけたが、リリースしているのはローカルインターフェイスなのだからRELEASE_LOCALと、対象を示すべきだ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|

ジェズイットを見習え