C言語のマルチスレッドプログラムについて質問があります。
クライアントプログラムからAPIを使ってサーバにアクセスする際にマルチスレッドを用いて多重アクセスし高速化を図りたいです.
APIは200回近く呼ぶため
RTTを増加させた際にシーケンシャルアクセスだと大幅に時間がかかるってしまいます.
そこでプログラミングしたのですが以下のソースのglobal_stack に値が入りません.
シーケンシャルにアクセスした場合はglobal_stack に値が詰まっています.
原因はなんなのでしょうか?非常に困っているのでどうかお力をお貸しください....
以下がソースコードになります.
C++
1void 2server_access(my_apiofc::stack x, ID id) 3{ 4 //tcpconnectionのクラスメソッドがaccess(stack *, ID); 5 tcpconnection.access(&x,id); 6 //stack のxに可変長の数だけ値が入る. 7} 8: 9: 10 11std::vector<std::thread> threads(N); 12for(int i = 0;i < N;i++){ 13 //N回アクセスする.stackをNこ生成して多重化を実現 14 threads[i] = std::thread(server_access,std::ref(x[i]),id); 15 //多重化はこの部分だけ. 16 //x[i]はserver_access で値を受け取る入れ物なので参照渡しにした. 17} 18 19for(int i = 0;i < N;i++){ 20 //グローバル変数の global_stack[1000] にx[0]~x[N]に入った値を詰めていく. 21 insert(x[i]) 22}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。