13/11/11 14:31:11.61
あれば使う
なければ作る
それがプログラマ
何も作らない
ブログに短いコードを書いて自己満足
それがブログラマ
31:デフォルトの名無しさん
13/11/11 16:36:55.31
>>1
> ※sage禁止です(と代々スレに書いてありますが自己判断で)。
代々? Ver.88という事だが、いつから代々なんだ? ねつ造すんな。
精神異常者のアンチhoge厨は死ね。
32:デフォルトの名無しさん
13/11/11 16:42:06.58
質問では sageずに質問する。 回答者側は随意に。
こういうのあったよ
33:デフォルトの名無しさん
13/11/11 18:41:15.40
>>26
今はOpenGLが主流だよ
34:デフォルトの名無しさん
13/11/11 21:05:17.00
WindowsAPIなんて、碌なテーブルもない。
35:デフォルトの名無しさん
13/11/11 22:16:07.06
c++の文法学べるサイト、どこかオススメあったら教えて下さい(>_<)
36:デフォルトの名無しさん
13/11/11 22:18:32.96
無限ループの関数を別スレッドにしてミューテックスで同期しようとしたけど、
デッドロックになったとか例外が出る
何とかならんでしょうか
#include <thread>
#include <mutex>
#include <iostream>
#include <windows.h>
std::mutex mutex;
void func()
{
for (;;) {
mutex.lock();
std::cout << "func." << std::endl;
}
}
int main()
{
mutex.lock();
std::thread thread(func);
std::cout << "mutex unlock." << std::endl;
mutex.unlock();
Sleep(1);
thread.detach();
std::cout << "detached." <<std::endl;
}
37:デフォルトの名無しさん
13/11/11 22:20:36.04
自分用にローカルプロキシ作りたいんですがサーバーソフトとしてポートを利用(接続待ち待機、受信等)する方法を教えてください
VC++2005の製品版使ってますがExpressで可能ならそれ以降のバージョンでも
.netのマネージコードではなくネイティブコードでお願いします
38:デフォルトの名無しさん
13/11/11 22:26:34.95
>>36
中身は読んでないがとりあえずrecursive_mutex使え。
あと自分でlock/unlockを呼び出すな。lock_guard使え。
39:デフォルトの名無しさん
13/11/11 22:30:28.94
>>36
for (;;) {
mutex.lock();
std::cout << "func." << std::endl;
}
なんだこのKUSOコードは死ね
40:デフォルトの名無しさん
13/11/11 22:51:33.85
>>37
WSAStartupしておいて、あとは普通のBSD形式のソケットAPIで終わり。
socket、bind、listen、accept、recv、send、closesocket。
あとselectとかshutdownとかsetsockoptとか。
WSAなんちゃらって高機能なAPIもあるけど、最低限BSD形式ので十分。
41:デフォルトの名無しさん
13/11/11 22:55:18.53
>40
ありがとうございます
それらを取っ掛かりに調べてみます
42:デフォルトの名無しさん
13/11/11 23:47:22.87
>>39
ワラタw
>>36
もうちょっとマルチスレッドとミューテクスについて勉強したほうがいいと思う
43:デフォルトの名無しさん
13/11/12 00:25:10.23
>>36
hoge本で勉強したって感じだな
44:デフォルトの名無しさん
13/11/12 00:40:43.10
>>40
チャットみたいに文字列を送受信したい場合もそれでいける?
他に適した方法あるならキーワードだけでも教えて欲しい
45:デフォルトの名無しさん
13/11/12 00:50:58.94
async()使った方が楽じゃん
46:デフォルトの名無しさん
13/11/12 01:14:53.46
>>44
いける。けどクライアントはconnectやIPアドレスの解決でgethostbynameとかも使う。
selectに含まれる話だけど、ブロッキングモードと非ブロッキングモード、スレッドセーフについて調べとくと良い。
マルチスレッドを積極的に使えば非ブロッキングモードもselectは不要だがスレッドセーフを意識する必要が増える。
selectを積極的に使えば非ブロッキングモードもマルチスレッドは不要…なのが理想だがWindowsの場合は難しい。
ウィンドウメッセージと、各種同期オブジェクトと、ソケット同期関連が混在してしまっている。
ソケットを直接触らない方法は色々あるけどお勧めとかは知らんので他の人頼んだ。
47:デフォルトの名無しさん
13/11/12 02:12:15.70
つ boost.asio
48:デフォルトの名無しさん
13/11/12 02:38:13.68
asioはWindowsではうまく動くんだけど、Linuxではうまく動かないから
ダメだわ。
色々考えてみたんだけど、Linuxで非同期はかなり無理あるわ。
自分でasioっぽいものをつくろうとか思ってもasioの二の舞なるわ。
あと、一つのプロセスがあいてるコアをできるだけ使いたいとか無理っぽかった。
これは厳しいわ。
公平なスケジューリングと言えば聞こえがいいんだけど、これメニーコアとかなったら
どうするんだろね。
こういう部分はWindowsのほうが得意っぽかった。
だから何って話だけど。
49:デフォルトの名無しさん
13/11/12 02:40:29.89
ああ、ちょっと誤解を招くな。
非同期が無理じゃなくて、非同期を抽象化するのが無理ぽかった。
50:デフォルトの名無しさん
13/11/12 02:45:14.66
Windows限定だったらasioは超お勧めだよ。
IOCP使ってくれるんで良い感じ。