過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2010/07/02
WSAAsyncGetHostByName はウィンドウを必要とするから使いづらい

 
最新のネタではありませんが、昔から気になっていた API の仕様について
ちょこちょこ書いてみる。
 
 
WSAAsyncGetHostByName は gethotbyname() の非同期版なのですが、
 
ウィンドウプロシージャーを使っての通知処理
 
なので非常に使いづらい。
 
ウィンドウが存在しないと使えない関数なので、コマンドプロンプトのプログラム
では、基本使うことが出来ない。
 
  
通知イベントを、関数で受け取れるようにすれば良いのに。
 
クロスプラットフォーム用の自作ライブラリを作ってると、ウィンドウハンドル
必須というメソッドは非常に困るところですね。
 
 
たまーに「同期メソッドはスレッドで実装すれば良い」という言葉だけを言う人も
いますが、その人は全てを理解した上で発言しているのか気になります。
 
同期メソッドをスレッドで呼び出そうが、プロセスを終了するときにはスレッドを
待た無いといけない(正常終了)ので、根本的に解決していない。
 
Windows NT でアプリケーションの安定性が上がり、ブルースクリーンもほとんど
無くなったとはいえ、これは必要な実装です。
 
例えば、
タイムアウトが発生するまでプロセスを終了出来ない事を回避する為に、
 
TerminateThread() をバシバシ使う事はありえないし、それをを当たり前とするの
は危険極まりない。
  
Linux/gcc ではプロセス空間を殺せば、"基本" リークは無いというのが通例ですが。
 
 
利便性を求めると、結局プロトコルから全部自作になってしまうんだよなぁ。
 
さすがに全て対して 車輪の再発明 を行うのは骨が折れますし…何より厳しい。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。