LinuxからWINDOWSへとあるソースを移植しているのですが、
スレッドのところでつまづいてます。
Linuxでは属性の設定やデタッチの設定といったことをしてからCreateしてるんですけ
ど、
windowsではそんな処理自体がないようなんですけどどうしたらよいでしょうか?
http://forums.belution.com/ja/vc/000/359/93.shtml
>発言される前に「使用上の注意」を必ずお読み下さい。
>■ マルチポストについて
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
>この行為は
> マナー違反として嫌われています。マルチポストは行わないで下さい。
>
>
> 誤ってマルチポストしてしまった場合には、必ず全ての掲示板にどのように
> 解決したかを記述し、かつお礼を書き込んで下さい。
>
> ※よく、マルチポストを指摘され、「***の掲示板にレスしておきました。」とか
> 「今後、気をつけます」とか書き込まれているのですが、管理人としては悲しいで
> す。
> この掲示板だけを見た人は、どのように解決したかわからないからです。
そのページは自分見てなかったのでマルチポストじゃないです・・・。が、同僚が書い
てたそうです・・・。
まぁ、新人の数人でやらされてることなんですけど、みんな分からない分からないと言
ってるので掲示板に書き込んだのですけど、(ちなみに先輩に聞いても周りに頼れる人
がいない状況だったらどうするの?とか自分で調べる練習って言って何も教えてくれま
せん。)
> (ちなみに先輩に聞いても周りに頼れる人がいない状況だったらどうするの?
> とか自分で調べる練習って言って何も教えてくれません。)
# 聞く先を掲示板に変えたところで、結局他人に聞いてるだけで調べてませんし、
# 練習にもなりませんが。(状況を理解してくれない分だけ、不適格な答えが返る可能性も…
# パッシブに「質問する」のではなく、自分なりに考えてみるとか、実際に試してみるとか、
# もっとアクティブに情報収集しろってことだと思うのですが<先輩の意図についての推測
Belutionのほうにレスつけておきました。
別人とのことなのでどちらにレスつければいいのか迷った orz
見当はずれなこと言ってたらごめんなさい。
# Linuxの場合はman ほげほげで大抵のことは調べられるはず。
# 英語が読めないときついかもしれませんが・・・。
# Linux環境がない場合はCygwin入れるとかKNOPPIX使うとかね。
# 調べ方ってのを自分の力で身に着けて欲しいってのがあるのかも。
# Linuxのソースがあるんだったらいくらでも調べる方法はあるはずなので。
ソースからの移植というのは、
「そこで何をしているか→それは何のためか」のリバースエンジニアリングと、
移植先<->移植元それぞれの理解、差分の理解などがないとまともにできません。
正攻法だと、ざっと書いてもこんな感じでしょうか。
> Linuxでは属性の設定やデタッチの設定といったことをしてからCreateしてるんですけど、
具体的に、どんな処理をしているのか。呼んでいる関数などを詳しく調べる。
それを設定することによってどうなるのか、理解する。
なぜ、それを設定するのか、その理由を理解する。
> windowsではそんな処理自体がないようなんですけどどうしたらよいでしょうか?
代わりの処理がないか、周辺の処理を詳しく調べてみる。
Linux と Windows ではスレッドの挙動などももちろん違うので、
差分についても詳しく調べ、理解する。
ここまでくれば、Linuxではなぜその処理が必要なのか、Linux と Windows の差分は何か、
などが既に分かっているので、それを前提にして、Windows ではそのために何が必要か、
どうすればいいかを調べる。
必要なものがわかれば、その実装方法を調べる/考える。時には不要かもしれない。
……
…
一朝一夕にできるようになるものでもないと思いますので、地道に勉強してみてください。
さっき気づいて聞いたのですが、 http://forums.belution.com/ja/vc/000/359/93.shtml
のHNと自分のHNが似てるのは同僚にたくやっていうインパクトのある人がいてそこから
名前を取ったからです。そのせいもあってマルチポストって思われたのかな。すみませ
んでした。
To:kureさん
kureさんのおかげでなんとかなりそうです。
># 調べ方ってのを自分の力で身に着けて欲しいってのがあるのかも。
確かにそんなこと言われましたが・・・、これにもう5時間もかけていたのでさすがに
掲示板を利用させていただいたというわけなんですよ。
># Linuxの場合はman ほげほげで大抵のことは調べられるはず。
英語読めないことないのですが、単語を調べながらだと時間的にきついですね。
># Linux環境がない場合はCygwin入れるとかKNOPPIX使うとかね。
こちらもチラッと拝見しましたが、なかなかよさそうです。
># Linuxのソースがあるんだったらいくらでも調べる方法はあるはずなので。
ソースがあっても環境がないわけで・・・、ソースを見てこんな動きするんだろうなぁ
とか創造はできても、実際はこう動いてるってのが分からない状況です><
創造したのがまったく違った場合、移植後まったく違うものが出来てしまうわけ
で・・・
To:Banさん
>具体的に、どんな処理をしているのか。呼んでいる関数などを詳しく調べる。
>それを設定することによってどうなるのか、理解する。
>なぜ、それを設定するのか、その理由を理解する。
今後の指針とさせていただきます。
問題自体は解決したのでチェックしますが、どなたか移植に関していいページをご存知
でしたら教えてください。
ソフトの「移植」というのは、イメージ的にはオマージュ込みの翻訳みたいなもので、
英語で書かれたアメリカ人向けの恋愛小説を、日本人に受けるように日本語約するような作業です。
# まず、英文を読み、アメリカ人の感性、アメリカの文化などを考慮して、話の筋、要素を抽出す
る。
# それを日本に置き換えて、日本人に理解される恋愛ストーリーにまとめあげる。
何を、どこから、どこへ移植するか、を絞らないと一般的な移植に関するいいページというのは難し
いでしょう。
Windows/Linuxのスレッド関係であれば、Windows側は「Win32」,Linux側は「POSIX」を
キーワードに調べていけば、比較的情報が集めやすいと思います。
試しに、例えば「Win32 POSIX 比較」とか「Win32 POSIX」とかを Google で検索してみてくだ
さい。
pthread_detach とか関数が分かっているなら、「pthread_detach Windows」とか検索すると、
逆方法の移植のページとか見つかりますね。
http://pinka99.ddo.jp/nanao/work/OsConversion.html
「キーワードの抽出」はひとつのポイントで、経験と学習とセンスが物を言う部分だと思います。
# ちなみに、Linux->Windows の移植で、オマージュでない翻訳がしたいのなら、
# 「Cygwin」というキーワードもあります。