次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part134
http://mevius.5ch.net/test/read.cgi/tech/1516406742/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part135
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 5fcb-q1Nq)
2018/03/31(土) 20:20:06.25ID:o3PNwIlC0831デフォルトの名無しさん
2018/05/17(木) 22:34:24.00 ここ3年ほど32bitの組み込み機器に触ったことない
832デフォルトの名無しさん (ワッチョイ 2ee7-+uOs)
2018/05/17(木) 22:37:16.99ID:53fi3uKJ0 今はほとんど64bitの上で無理矢理32bit動かしてるんだよ
ネイティブ32bitCPUなんて化石
ネイティブ32bitCPUなんて化石
833デフォルトの名無しさん (ワッチョイ 5a68-RYnA)
2018/05/17(木) 22:51:21.67ID:yYAGBjqQ0834デフォルトの名無しさん (ワントンキン MM25-1jw3)
2018/05/18(金) 17:13:18.87ID:8ieomEvbM vc++のマルチコアのオプティマイズなんて甘々だから余裕で
勝てるけどなぁ。
あんなのに負ける人もいるって、世の中広いなぁ(棒)
勝てるけどなぁ。
あんなのに負ける人もいるって、世の中広いなぁ(棒)
835771 (ワッチョイ b133-NTEn)
2018/05/18(金) 18:23:15.07ID:G5mHfuQa0 アホだろお前
836デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/18(金) 18:33:25.05ID:pNV6CZfO0 そりゃあ頑張れば勝てるだろう
コーディングコストと可読性の犠牲に見合うほど速くなるかどうかは別問題だがね
コーディングコストと可読性の犠牲に見合うほど速くなるかどうかは別問題だがね
837771 (ワッチョイ 95b3-NTEn)
2018/05/18(金) 18:57:13.66ID:jCVxhDbN0 VCもそうだけど大体のコンパイラは並列化や自動ベクタライズは強くないと思う
古くからある機能とそうでないものでは最適化に差が出るのは当然
だからこそSIMD使うときはみんなイントリンシック命令使ってるのであって
古くからある機能とそうでないものでは最適化に差が出るのは当然
だからこそSIMD使うときはみんなイントリンシック命令使ってるのであって
838デフォルトの名無しさん (スップ Sdda-D7Hy)
2018/05/18(金) 20:11:41.99ID:Xj+Uy2RAd >>834て誰に対してのレス?
839デフォルトの名無しさん (ワッチョイ 4623-XbkE)
2018/05/18(金) 21:20:25.60ID:TsUe9Yho0 >>828
template<std::size_t N>
class A {
public:
const double array[N];
template<typename ...ARGS>
A( ARGS&&... args ): array{std::forward<ARGS>(args)...} {}
};
template<typename ...ARGS>
inline auto make_A( ARGS&&... args ) -> A<sizeof...(args)>
{
return A<sizeof...(args)>(std::forward<ARGS>(args)...);
}
auto a{ make_A( 1.0, 2.0 ) };
こんな感じだろうか。
要C++11以降。
>>どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんでサイズは未定にしておきました
要素数が決まってないとコンパイル時に困るので、テンプレートクラスにしちゃったけれど…
template<std::size_t N>
class A {
public:
const double array[N];
template<typename ...ARGS>
A( ARGS&&... args ): array{std::forward<ARGS>(args)...} {}
};
template<typename ...ARGS>
inline auto make_A( ARGS&&... args ) -> A<sizeof...(args)>
{
return A<sizeof...(args)>(std::forward<ARGS>(args)...);
}
auto a{ make_A( 1.0, 2.0 ) };
こんな感じだろうか。
要C++11以降。
>>どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんでサイズは未定にしておきました
要素数が決まってないとコンパイル時に困るので、テンプレートクラスにしちゃったけれど…
840デフォルトの名無しさん (ワッチョイ 4623-XbkE)
2018/05/18(金) 22:05:36.49ID:TsUe9Yho0841デフォルトの名無しさん (ワッチョイ b133-NTEn)
2018/05/18(金) 22:33:37.26ID:G5mHfuQa0 参考にしてみた
https://wandbox.org/permlink/3asRA3QSPQXmmn8l
C++17ならヘルパー不要にはなる・・・(コンストラクタに与えた引数から推定
けどどっちにしても配列数可変にはできない
ていうか配列の参照とか初めて使ったw
https://wandbox.org/permlink/3asRA3QSPQXmmn8l
C++17ならヘルパー不要にはなる・・・(コンストラクタに与えた引数から推定
けどどっちにしても配列数可変にはできない
ていうか配列の参照とか初めて使ったw
842デフォルトの名無しさん (ワッチョイ 9aa2-NEzo)
2018/05/19(土) 00:03:26.14ID:9PVep4LN0 >>828
C++14のinteger_sequence使ってみた
#include <iostream>
#include <utility>
template <size_t N>
class A
{
const double array[N];
public:
template <size_t... I>
A(const double (&temp)[N], std::index_sequence<I...>) : array{temp[I]...}
{
for (auto x : array) std::cout << x << std::endl;
}
A(const double (&temp)[N]) : A(temp, std::make_index_sequence<N>()){}
};
int main()
{
double t[] = {1.1, 2.2, 3.3};
A<sizeof(t)/sizeof(t[0])> a(t);
//A a(t); // C++17
}
C++14のinteger_sequence使ってみた
#include <iostream>
#include <utility>
template <size_t N>
class A
{
const double array[N];
public:
template <size_t... I>
A(const double (&temp)[N], std::index_sequence<I...>) : array{temp[I]...}
{
for (auto x : array) std::cout << x << std::endl;
}
A(const double (&temp)[N]) : A(temp, std::make_index_sequence<N>()){}
};
int main()
{
double t[] = {1.1, 2.2, 3.3};
A<sizeof(t)/sizeof(t[0])> a(t);
//A a(t); // C++17
}
843デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/19(土) 00:10:45.61ID:WRHfxyyT0 糞面倒だな
844デフォルトの名無しさん (アウアウウー Sa39-RYnA)
2018/05/19(土) 00:15:37.45ID:VIvIbG0Fa アンチパターンを生み出すための新機能が次々出てくるのがc++だ!
845デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/19(土) 00:33:17.81ID:WRHfxyyT0 こういうのからiostreamみたいになってゆくんだろうな
846デフォルトの名無しさん (ワッチョイ 769a-qaY6)
2018/05/19(土) 03:41:10.01ID:BMt6S/TK0 つか引数にconst double(&temp)[]って何だと渡せるのこれ
()ないとエラー出るし
()ないとエラー出るし
847デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/19(土) 06:54:38.61ID:KlOWaW480 何も渡せないよ
配列数のない配列型はどんな文脈でも不完全型だからその型のオブジェクトは存在し得ない
配列数のない配列型はどんな文脈でも不完全型だからその型のオブジェクトは存在し得ない
848デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/19(土) 07:39:54.12ID:03NPLOb40 >>842
VS2017 15.7.1のVCのReleaseモードだとtemplateの部分が赤の下波線になるな
Debugモードにするとなぜか消える
そしてReleaseモードはエラーが出ているのにコンパイルして実行可能
バグじゃね
VS2017 15.7.1のVCのReleaseモードだとtemplateの部分が赤の下波線になるな
Debugモードにするとなぜか消える
そしてReleaseモードはエラーが出ているのにコンパイルして実行可能
バグじゃね
849はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ae6f-HRP5)
2018/05/19(土) 12:37:22.83ID:WMhjioR90 >>847
仮引数として表れる場合はポインタに調整されるんじゃなかったっけ?
仮引数として表れる場合はポインタに調整されるんじゃなかったっけ?
850デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/19(土) 13:11:36.50ID:KlOWaW480 配列型はね
配列の参照型はされない
配列の参照型はされない
851デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/21(月) 09:24:48.82ID:SHQ/MEmo0 引数で渡す場合は配列自体が参照型だもんな
852デフォルトの名無しさん (ワッチョイ b632-NEzo)
2018/05/21(月) 21:45:00.90ID:SySmX4Pj0 配列への参照ってのはあるんだけどね
template <typename T, int N>
N size(T (&)[N]) { return N; }
template <typename T, int N>
N size(T (&)[N]) { return N; }
853デフォルトの名無しさん (ワッチョイ b632-NEzo)
2018/05/21(月) 21:45:22.62ID:SySmX4Pj0 あ、ミスった
わかる人笑ってw
わかる人笑ってw
854デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/22(火) 10:34:44.57ID:QHYj3MXfM855デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/22(火) 17:07:12.03ID:CbgK21am0856デフォルトの名無しさん (ドコグロ MMfa-/8Ls)
2018/05/22(火) 17:37:39.23ID:LzyusK+ZM857デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/23(水) 09:57:56.51ID:NT2O+rqe0858デフォルトの名無しさん (ワッチョイ 758a-ZY9B)
2018/05/23(水) 10:14:09.85ID:2zsXYckB0 >>848の3行目は無かったことにすると
859デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/23(水) 10:39:06.93ID:NT2O+rqe0 だから「エディタの」バグと書き忘れただけなのにお前らしつこいな
DebugモードでもReleaseモードでもコンパイルして実行できてたんだから
DebugモードでもReleaseモードでもコンパイルして実行できてたんだから
860デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 12:24:31.22ID:fJYH1ZEbM 書き忘れとか知らんがな w
そもそもエディタのバグと言うなら三行目は元々不要
余計なことを書いて突っ込まれるとか低能にありがちな行動ってだけ
そもそもエディタのバグと言うなら三行目は元々不要
余計なことを書いて突っ込まれるとか低能にありがちな行動ってだけ
861デフォルトの名無しさん (アウアウウー Sa39-zBOy)
2018/05/23(水) 12:33:07.54ID:8Hna4W5Ya862デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 12:40:43.11ID:fJYH1ZEbM863デフォルトの名無しさん (ブーイモ MMfa-SJSt)
2018/05/23(水) 13:02:27.39ID:nSCJSr52M エラーの話なのになぜか未定義とか言い出す奴が
864デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 15:37:22.12ID:fJYH1ZEbM 未定義の意味を理解してないなら絡んでこない方がいいぞ
865デフォルトの名無しさん (ワッチョイ b678-NEzo)
2018/05/23(水) 17:20:05.74ID:CpOh1zRO0 エラー
警告
未定義
不適格
↑
混同するやつが後を絶たないな
警告
未定義
不適格
↑
混同するやつが後を絶たないな
866デフォルトの名無しさん (ワッチョイ 89fa-9WOx)
2018/05/23(水) 19:15:29.66ID:Au5e7VGg0 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
V9EWM
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
V9EWM
867デフォルトの名無しさん (ワッチョイ b678-NEzo)
2018/05/23(水) 21:13:20.83ID:CpOh1zRO0 しょーもね
868デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 21:13:21.12ID:fJYH1ZEbM この文脈でエラーとか警告とか言い出す時点でアホ丸出しなんだが...w
869デフォルトの名無しさん (ワッチョイ daeb-yA46)
2018/05/23(水) 22:07:04.14ID:lbYCZF160 VisualStudioはインテリセンスとコンパイルに使うコンパイラが違う
ちょっと設定変えると、とてつもなくエラーが出るのにコンパイルは通るという事態は稀に良くある
ちょっと設定変えると、とてつもなくエラーが出るのにコンパイルは通るという事態は稀に良くある
870デフォルトの名無しさん (ブーイモ MM1d-RIxT)
2018/05/24(木) 12:25:45.78ID:hqF4m+XgM871デフォルトの名無しさん (ワッチョイ 5146-vwA5)
2018/05/24(木) 23:58:30.63ID:XccjINB00 あるコンテナaとコンテナbを連結?するようなクラス(イテレータ)を作りたいんだが
イメージとしてはa.begin()からa.end()-1までいったら次はb.begin()になるようなやつを思い浮かべてるんだけど
どんな風につくればよいかアドバイスください
イメージとしてはa.begin()からa.end()-1までいったら次はb.begin()になるようなやつを思い浮かべてるんだけど
どんな風につくればよいかアドバイスください
872デフォルトの名無しさん (ワッチョイ 93a2-vxiR)
2018/05/25(金) 00:18:38.25ID:HgmGhgcw0 >>871
concat_iteratorでググるとそれっぽい実装がチラホラ
concat_iteratorでググるとそれっぽい実装がチラホラ
873デフォルトの名無しさん (バットンキン MM25-vADk)
2018/05/25(金) 10:18:09.43ID:SC+wi2VoM C++で2Dのwindowsで動くゲーム作ろうと思っているのだけど、ライブラリって何使えばいいんだ?
874デフォルトの名無しさん (ブーイモ MM1d-RIxT)
2018/05/25(金) 10:18:58.21ID:AT66E0O7M GDI
875デフォルトの名無しさん (ワッチョイ 8b9a-2NJ2)
2018/05/25(金) 11:33:06.12ID:JXMMrzE70 direct2d
876デフォルトの名無しさん
2018/05/25(金) 12:11:02.95 Unity
877デフォルトの名無しさん (ワッチョイ 59b3-x/qq)
2018/05/25(金) 12:19:23.12ID:lIIOH/4a0 Opengl
878デフォルトの名無しさん (アウアウウー Sadd-DqgS)
2018/05/25(金) 12:52:26.94ID:s00mTA6Oa DirectX Tool Kit
879デフォルトの名無しさん (ワントンキン MM25-RIxT)
2018/05/25(金) 14:11:55.60ID:7mkguDclM cairo
880デフォルトの名無しさん (ワッチョイ 39a9-vADk)
2018/05/25(金) 18:33:18.15ID:vSqqKkie0 いっぱいあるなー、一通り試してみようかな
881放置された蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-s+lB)
2018/05/25(金) 18:37:43.90ID:mtapFpQed 全部は時間的に無理。
882デフォルトの名無しさん (アウアウウー Sadd-Ockd)
2018/05/25(金) 19:06:13.22ID:O4zlrz7ka DirectX Tool Kit一択だとおもうが
883デフォルトの名無しさん (ワッチョイ 9381-DqgS)
2018/05/25(金) 19:16:41.38ID:BiCg0uer0 OpenGLなんてのは?
884デフォルトの名無しさん (ワッチョイ fb9b-bqqt)
2018/05/25(金) 19:17:34.72ID:el+ngQt20 windowsに限定するならopneGLにする意味は薄い
885デフォルトの名無しさん (ワッチョイ 39a9-vADk)
2018/05/25(金) 23:32:47.23ID:vSqqKkie0 DirectX tool kit なるものは一般的なDirectXの上位互換みたいな捉え方でおk?
886デフォルトの名無しさん (ワッチョイ d904-zX0R)
2018/05/25(金) 23:41:23.37ID:9e9u/b+G0 >>882
よこからだけど、これ面白そう。
よこからだけど、これ面白そう。
887はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b6f-DqgS)
2018/05/26(土) 01:45:05.97ID:r5N0xqhb0 Siv3D とかも楽に使えると思う。 (3D という名前がついてるけど 2D もいける)
888デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/26(土) 09:49:22.16ID:Gw/MbzDj0 今の時代なら cocos 2d とかモバイルでも使えるライブラリ使った方がいいんじゃないのか
889デフォルトの名無しさん (スプッッ Sd33-PpUk)
2018/05/26(土) 10:01:48.35ID:KfOwUuVld c++ならアンリアルエンジンで行こうぜ
890デフォルトの名無しさん (ワッチョイ d993-xy05)
2018/05/26(土) 15:38:59.11ID:dTnlF+1t0 あれESCキーが消えるから…
891デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 08:17:20.26ID:kgP2LOmLa string::size_type についてですが、
size_type の前についている
「string::」
というのは何ですか?
size_type の前についている
「string::」
というのは何ですか?
892デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 08:20:28.98ID:kgP2LOmLa 名前空間ではないようですし。
893デフォルトの名無しさん (ドコグロ MM3d-Lo1h)
2018/05/29(火) 08:28:38.63ID:HMjaHK3IM 静的メンバ関数
でぐぐれ
でぐぐれ
894デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 09:38:09.06ID:kgP2LOmLa895デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/29(火) 12:33:02.70ID:WLsT9puy0 メンバ関数の引数や戻り値、メンバ変数などで使用するためにクラススコープで定義された型のこと
クラス(この場合はstd::string)を利用する側は、
実際にはその型がなんであるかを知る必要なく
文字列のサイズの型としてstring::size_type を用いることができる
参考
https://stackoverflow.com/questions/41471741/string-companion-types
クラス(この場合はstd::string)を利用する側は、
実際にはその型がなんであるかを知る必要なく
文字列のサイズの型としてstring::size_type を用いることができる
参考
https://stackoverflow.com/questions/41471741/string-companion-types
896デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 13:47:00.51ID:kgP2LOmLa897デフォルトの名無しさん (ワッチョイ 89ab-wW0t)
2018/05/29(火) 23:46:46.84ID:vO9YU0hS0 std::threadでサブスレッドで処理をしているのですが、処理をキャンセルするためthreadをdetachすると
メモリを破壊しているようで全然別の箇所で色々なエラーが出てきます。system_errorは送出されていません。
サブスレッドではnewでのリソース確保もしていないので理由がわからないです。
detachする際にはjoinableである以外に条件があるのでしょうか。
メモリを破壊しているようで全然別の箇所で色々なエラーが出てきます。system_errorは送出されていません。
サブスレッドではnewでのリソース確保もしていないので理由がわからないです。
detachする際にはjoinableである以外に条件があるのでしょうか。
898デフォルトの名無しさん (ブーイモ MM33-wlFZ)
2018/05/29(火) 23:59:57.19ID:6Y/6D3P7M >>897
スレッドローカル記憶域とか破棄されたあとにアクセスしてんじゃないの?
スレッドローカル記憶域とか破棄されたあとにアクセスしてんじゃないの?
899デフォルトの名無しさん (ワッチョイ 13eb-Jwyk)
2018/05/30(水) 00:33:26.79ID:4+P0NcT60 std::threadのdetachってスレッドを手放すだけでキャンセルはしないのでは
ラムダ式で処理を渡してるなら、ローカル変数の参照キャプチャとかしてるない?
ラムダ式で処理を渡してるなら、ローカル変数の参照キャプチャとかしてるない?
900デフォルトの名無しさん (ワッチョイ c9b3-UDci)
2018/05/30(水) 00:33:44.46ID:D8xt/f/p0 detachしてもスレッドは動き続けますが。
901デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/30(水) 00:56:37.13ID:OvmXW6ID0 一般にスレッドのキャンセルは難しいので適当に処理を終わらせてjoinするのが良いも思う
902デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 01:10:14.80ID:K2528e3P0 https://ideone.com/3LDXGx
質問です。定期的に同じ関数をスレッドで起動するクラスを作りました。
んでコード中のここ無駄って書いてある行を削除する方法はありませんか。
開発はVCでやってますが、GCCでも通ればいいなーと思っています。
質問です。定期的に同じ関数をスレッドで起動するクラスを作りました。
んでコード中のここ無駄って書いてある行を削除する方法はありませんか。
開発はVCでやってますが、GCCでも通ればいいなーと思っています。
903897 (ワッチョイ 89ab-wW0t)
2018/05/30(水) 02:51:38.91ID:gP4Z92jH0 すみません。言葉足らずでした。
メインスレッド:GUI、サブスレッド:既存のライブラリでデータ補間の重い処理
を担当していて、途中でデータ補間パラメータを変更したくなった場合
キャンセルボタンを押してやり直す、という処理を考えています。
CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。重い処理のループの中にキャンセル用フラグでも用意できればキャンセル通知後
ループを抜けて速やかにjoinするところまで到達させる等の方法があるのですが、
既存ライブラリなのでそうはいかず諦めてdetachしようと考えています。
そのまま走り続けるだけだから結果を回収せずほっておけば良いのかと思ってましたが
甘かったみたいです。
>>898
thread_localは使っていないです。
>>899
アドバイスありがとうございます。関数オブジェクト作ってキャプチャは使っていないです。
>>901
スレッドを平和理に終了させる方法はなさそうなのでdetachできなければ諦めてjoinするしかなさそうですね…
とりあえず最小の再現例を作ってみることにします。
メインスレッド:GUI、サブスレッド:既存のライブラリでデータ補間の重い処理
を担当していて、途中でデータ補間パラメータを変更したくなった場合
キャンセルボタンを押してやり直す、という処理を考えています。
CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。重い処理のループの中にキャンセル用フラグでも用意できればキャンセル通知後
ループを抜けて速やかにjoinするところまで到達させる等の方法があるのですが、
既存ライブラリなのでそうはいかず諦めてdetachしようと考えています。
そのまま走り続けるだけだから結果を回収せずほっておけば良いのかと思ってましたが
甘かったみたいです。
>>898
thread_localは使っていないです。
>>899
アドバイスありがとうございます。関数オブジェクト作ってキャプチャは使っていないです。
>>901
スレッドを平和理に終了させる方法はなさそうなのでdetachできなければ諦めてjoinするしかなさそうですね…
とりあえず最小の再現例を作ってみることにします。
904デフォルトの名無しさん (ワッチョイ 31c3-4/py)
2018/05/30(水) 09:53:15.07ID:eD7a+sCF0 重い処理の方を別プログラムのプロセスにしちゃって止めるときはブチ殺すのがシンプルで良さそうに見える
905デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:43:48.31ID:K2528e3P0906デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:44:50.87ID:K2528e3P0 >>902
たのんますー。
たのんますー。
907デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:50:39.57ID:K2528e3P0 基本的にstd::threadでキャンセルは不可能。
自分でそういう機構を汲んでやらないといけない。
whileの実行をキャンセルするbool変数つっこむとか。
それでもクリティカルパスの実行は避けられない。
自分でそういう機構を汲んでやらないといけない。
whileの実行をキャンセルするbool変数つっこむとか。
それでもクリティカルパスの実行は避けられない。
908デフォルトの名無しさん (ワッチョイ d950-UKFX)
2018/05/30(水) 18:55:49.81ID:DJsvI6z80 強引にスレッドを殺すと、
そのスレッドが確保してたリソースが解放されないかもしれないぞ
メモリであったりセマフォだったりハンドルだったり
ちゃんと終了処理を追加しないとダメだよ
そのスレッドが確保してたリソースが解放されないかもしれないぞ
メモリであったりセマフォだったりハンドルだったり
ちゃんと終了処理を追加しないとダメだよ
909デフォルトの名無しさん (ワッチョイ 1323-Y0oy)
2018/05/30(水) 19:05:49.61ID:EimB82cz0910デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 22:01:02.21ID:K2528e3P0 ぷぅうううううううううりいいいいいいいぃいいいいいいいいいずへーーーーーーーるぷみーーーーーーーーーー。
911デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/05/31(木) 16:11:24.94ID:W0WQ5cWo0 関数の中にif(cancel)return;みたいなのを大量に仕込んで外からフラグを立てて止めろ
912デフォルトの名無しさん (ワッチョイ 457e-msj4)
2018/05/31(木) 19:02:31.60ID:OT8Sfmwc0 基本的にはフラグで止めるか別プロセスで実行するのが定石だが
質問者は
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
>構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。
と言ってるからなぁ
質問者は
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
>構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。
と言ってるからなぁ
join なんて、カラクリが良く分からないものを、よく使う気になるなぁ
私なら、チャイルドプロセスが自爆するように、陽に記述するなぁ
私なら、チャイルドプロセスが自爆するように、陽に記述するなぁ
914デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/05/31(木) 20:40:15.15ID:nmebeT/e0 joinが嫌ならdetachすればいいのよ
パンがなければお菓子をたべればいいのよ
パンがなければお菓子をたべればいいのよ
915デフォルトの名無しさん (ワッチョイ 169f-msj4)
2018/05/31(木) 20:53:09.91ID:VgZC2OSf0 世の中には信じられないメンタリティの人がいるもんだなあ
916デフォルトの名無しさん (ワッチョイ 7a23-XTxf)
2018/05/31(木) 21:03:58.91ID:3a+XHa0i0 join のカラクリは何も難しいことないと思うが
917デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/05/31(木) 21:13:34.61ID:nmebeT/e0 標準ライブラリが嫌ならpthread使えばいいのよ
918897 (ワッチョイ bdab-b3FY)
2018/05/31(木) 21:49:57.28ID:VY6h/Th40 いろいろアドバイスありがとうございます。
どうもdetachした後に局所変数が確保されるとスタックを破壊してしまうようで、
局所変数を確保する前に>>911氏のいうようにif(cancel)return;入れるとLinuxでは落ちなくなりました。
ですが、windowsでは改善せず諦めました。atomicにするのものも面倒ですし。
結局キャンセルするときは結果を回収せず、さらに別スレッド立ち上げてjoinすることで
メインスレッドのGUIに制御が戻るようにしました。長期的には別プロセス化するしかなさそうですね。
ありがとうございました。
どうもdetachした後に局所変数が確保されるとスタックを破壊してしまうようで、
局所変数を確保する前に>>911氏のいうようにif(cancel)return;入れるとLinuxでは落ちなくなりました。
ですが、windowsでは改善せず諦めました。atomicにするのものも面倒ですし。
結局キャンセルするときは結果を回収せず、さらに別スレッド立ち上げてjoinすることで
メインスレッドのGUIに制御が戻るようにしました。長期的には別プロセス化するしかなさそうですね。
ありがとうございました。
919デフォルトの名無しさん (ドコグロ MM19-/PkI)
2018/05/31(木) 21:53:20.51ID:TwfgGFWOM920デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:35:57.56ID:EV/maKH/0 913はスレッドを自爆させた後joinしないのであろう…
921デフォルトの名無しさん
2018/05/31(木) 22:51:40.57 子スレッドが一つならjoinで待っててもいいけど、複数個になったら無限ループで待つよね
922デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:52:12.55ID:EV/maKH/0 ていうか「重い処理かつ終了に時間が要するスレッド」複数個を所有するサーバみたいなスレッドを一発噛ませて、
パラメータを変えたくなったら「現行スレッド停止」と「新しいパラメータでのスレッド起動」をサーバに対して指令するつくりにすれば
良い
この場合は「重い処理かつ終了に時間が要するスレッド」が終了するまで誰も待つ必要はなく(※サーバ終了時は除く
、サーバみたいなスレッドは、クライアントから「新しいパラメータでのスレッド起動」コマンドを受けたときおもむろに
「死んでる(再利用できる)スレッドはどれかいな〜、」とタイムアウト0秒のjoinでポーリング式にサーチすれば良い
現行スレッドが死ぬまでの間現行スレッドと新たに起動するスレッドが並列に動くことになるが
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは 構わない
ということですしおすし、
パラメータを変えたくなったら「現行スレッド停止」と「新しいパラメータでのスレッド起動」をサーバに対して指令するつくりにすれば
良い
この場合は「重い処理かつ終了に時間が要するスレッド」が終了するまで誰も待つ必要はなく(※サーバ終了時は除く
、サーバみたいなスレッドは、クライアントから「新しいパラメータでのスレッド起動」コマンドを受けたときおもむろに
「死んでる(再利用できる)スレッドはどれかいな〜、」とタイムアウト0秒のjoinでポーリング式にサーチすれば良い
現行スレッドが死ぬまでの間現行スレッドと新たに起動するスレッドが並列に動くことになるが
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは 構わない
ということですしおすし、
923デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:56:14.51ID:EV/maKH/0 >>921
ウィンドーズならWaitForMultipreObjects()とかその亜種で複数の終了待ちができうる
そうでなくともイベントフラグの同時待ちはだいたいどんなマルチタスクOSでもできるから
それを使って類似のしくみを作れうる、。
ウィンドーズならWaitForMultipreObjects()とかその亜種で複数の終了待ちができうる
そうでなくともイベントフラグの同時待ちはだいたいどんなマルチタスクOSでもできるから
それを使って類似のしくみを作れうる、。
924デフォルトの名無しさん (ワッチョイ daf9-xIz4)
2018/05/31(木) 23:21:33.93ID:i2WXWbd70 >>923
できうる、作れうるって日本語的におかしいだろう
できうる、作れうるって日本語的におかしいだろう
925デフォルトの名無しさん (ワッチョイ f58d-InwY)
2018/06/01(金) 04:04:16.74ID:p3jBadVq0 ウインドーズとか何か別物感あるし、multipleのスペルもおかしいし大丈夫か
926デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/06/01(金) 04:08:40.92ID:ampOWGNn0 色々なところで糞が露呈している
それがWindows
それがWindows
927はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e6f-NLsb)
2018/06/01(金) 04:11:32.11ID:uW2rQW//0 デザインとしては Windows の方が現代的なんだけど、
色んなものが POSIX を基本にしたデザインになってるから噛み合わないんよなぁ。
色んなものが POSIX を基本にしたデザインになってるから噛み合わないんよなぁ。
928デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/06/01(金) 04:16:04.83ID:ampOWGNn0 POSIXに準拠できないWindowsがどうかしている
929はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e6f-NLsb)
2018/06/01(金) 04:22:16.25ID:uW2rQW//0 >>928
昔は POSIX 準拠にしてたよ。
アメリカの政府が採用するのに POSIX を要求してたみたいで、仕方なくやったって話。
だけど、基本的なモデルが違うものに API だけ接ぎ木してもなぁ。
昔は POSIX 準拠にしてたよ。
アメリカの政府が採用するのに POSIX を要求してたみたいで、仕方なくやったって話。
だけど、基本的なモデルが違うものに API だけ接ぎ木してもなぁ。
930デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/06/01(金) 04:43:45.31ID:SICoZSIN0 windowsでpthread使うたびにトラブル起こってつら
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 高市早苗「長期金利なんかよりも日本が成長することのほうが大事」 [834922174]
- 【悲報】高市「マクロンさあ!近平G7に呼ばずハミゴにしちゃってよ!😡」【小学生内閣】 [359965264]
- 結局手を出さなければ緊張することもなかった、高市早苗の外交力はゼロどころかマイナス [245325974]
- 近所にびっくりドンキーがないんだけど!!!
- 【安倍晋三】中国船4隻が領海侵入 [828897501]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ4🧪
