[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/17 22:51 / Filesize : 282 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part135



1 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:20:06.25 ID:o3PNwIlC0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part134
mevius.5ch.net/test/read.cgi/tech/1516406742/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

830 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 22:43:36.39 ID:sqV4cudU0.net]
例外投げるインデクサと投げないインデクサ両方ありますから。

831 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 22:46:39.90 ID:IhUmYIjB0.net]
プロパティONにするとチェック有効で

832 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 22:46:50.65 ID:IPNyvhtL0.net]
>>802
オブジェトCを彷彿させるので嫌です

833 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 03:32:46.81 ID:gRCAgj/W0.net]
>>802
attributes構文と紛らわしい。

834 名前:デフォルトの名無しさん [2018/05/16(水) 23:25:18.23 ID:cmH84vOv0.net]
arrayはなんで[]でチェックしてくれないの

835 名前:はちみつ餃子 mailto:sage [2018/05/16(水) 23:28:49.70 ID:axtQyUCZ0.net]
ゼロコストの原則

836 名前:デフォルトの名無しさん [2018/05/17(木) 02:43:52.94 ID:vEqyw0xg0.net]
C++のコストの大部分は例外に起因するらしい。
Cでコンパイルできるコードであっても、C++としてコンパイルするとバイナリが肥大化する。
その原因は例外。

837 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 07:10:31.59 ID:AhjFsLsi0.net]
x86-64だとゼロコストだよ

838 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 08:34:28.77 ID:FVFi5bM10.net]
どこにコストが消えたんだろ
サボってるの?



839 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 09:12:53.49 ID:UhXGat7x0.net]
>>810 要出典。

840 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 14:51:21.43 ID:T9EnGAyld.net]
x86-32だと割り込み発生時に対応出来るように
関数コールの度にスタックに情報を埋め込む

x86-64はこれが不要
割り込み処理がなければコストはかからない

841 名前:デフォルトの名無しさん [2018/05/17(木) 18:56:39.80 ID:vEqyw0xg0.net]
>>813
組み込み開発の株式会社○○みたいなサイトで読んだんだけどな。
なかなかためになる内容だったしブックマークしとくんだった。
見つけたらリンクくれ。

842 名前:デフォルトの名無しさん [2018/05/17(木) 18:58:28.25 ID:vEqyw0xg0.net]
俺の見解では、例外にコストが割かれるなら、それは必要なコストだと思うんだよな。

843 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 19:43:22.14 ID:WDNJ9RfY0.net]
元記事消えてるっぽいからアーカイブだけど
bytepointer.com/resources/pietrek_amd_x64_primer.htm

Windowsの例外機構がx64ではスタックベースからテーブルベースの通過するだけならゼロコストなものに変わった
ただしバイナリサイズは増える

844 名前:はちみつ餃子 mailto:sage [2018/05/17(木) 19:46:45.63 ID:oI1zc+Au0.net]
>>816
例外を使うならコストがかかるのは当然なんだが、
例外が通過しないかもしれないのにそこかしこで情報を積まないといけないのは良くないってことなんよ。
そんでまあ例外を投げたときだけにコストが生じる方式がいいよねっていう話。

845 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 20:29:27.85 ID:AhjFsLsi0.net]
例外が発生しない時のコストなんてゴミみたいなもんだけどな

846 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 20:30:03.35 ID:AhjFsLsi0.net]
イヤなら64bitで組みなさい

847 名前:デフォルトの名無しさん [2018/05/17(木) 20:38:19.60 ID:vEqyw0xg0.net]
64ビット化するとサイズが1.5倍になるらしいけどな。

848 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 20:40:58.24 ID:AhjFsLsi0.net]
今時コードのサイズなんて問題にならんだろ
その代わりに得るものは大きい



849 名前:デフォルトの名無しさん [2018/05/17(木) 21:11:41.72 ID:vEqyw0xg0.net]
1.5倍って40sの可愛い少女が60sのオバはんになるってことではないだろか。
さあどっちか選ぶんだ。

850 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:42:32.65 ID:53fi3uKJ0.net]
どうしても対応し続けないといけない32bitのレガシーデバイスがあるなら頑張って
そうじゃなけりゃもう32bitなんて捨てろ

851 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:43:14.24 ID:egaCGTtIM.net]
>>823
それ得るもの無さすぎないか?

852 名前:デフォルトの名無しさん [2018/05/17(木) 21:57:59.98 ID:vEqyw0xg0.net]
60kgのオッサンになるよりはいいだろ。

853 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 22:02:48.61 ID:/ukQRMvg0.net]
32bitがレガシーだあ?
どこで吹き込まれたか知らんが
騙されやすいやつだな

854 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 22:20:15.79 ID:yYAGBjqQ0.net]
クラスのconst配列メンバをコンストラクタで初期化するにはどうしたらいいでしょうか?

class A
{
 const double array[];

 void A( double &temp[] ) : array(temp)
 {
 }
};


これはコンパイルでエラーが出てダメでした

855 名前:デフォルトの名無しさん [2018/05/17(木) 22:32:37.31 .net]
>>828
できないからあきらメロン

素直にconst外してアクセサで制御するか、vector使うかしとけ

テンプレートとかを駆使して無理に実現しようと試みるのはいかにも頭が悪いし時間の無駄

856 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 22:33:23.35 ID:MPVDtJCy0.net]
constの問題というよりサイズが決まってないからダメなんじゃないの?

857 名前:デフォルトの名無しさん [2018/05/17(木) 22:34:24.00 .net]
ここ3年ほど32bitの組み込み機器に触ったことない

858 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 22:37:16.99 ID:53fi3uKJ0.net]
今はほとんど64bitの上で無理矢理32bit動かしてるんだよ
ネイティブ32bitCPUなんて化石



859 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 22:51:21.67 ID:yYAGBjqQ0.net]
>>829
了解です、constは諦めマスカット

>>830
どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんで
サイズは未定にしておきました

860 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 17:13:18.87 ID:8ieomEvbM.net]
vc++のマルチコアのオプ

861 名前:ティマイズなんて甘々だから余裕で
勝てるけどなぁ。
あんなのに負ける人もいるって、世の中広いなぁ(棒)
[]
[ここ壊れてます]

862 名前:771 mailto:sage [2018/05/18(金) 18:23:15.07 ID:G5mHfuQa0.net]
アホだろお前

863 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 18:33:25.05 ID:pNV6CZfO0.net]
そりゃあ頑張れば勝てるだろう
コーディングコストと可読性の犠牲に見合うほど速くなるかどうかは別問題だがね

864 名前:771 mailto:sage [2018/05/18(金) 18:57:13.66 ID:jCVxhDbN0.net]
VCもそうだけど大体のコンパイラは並列化や自動ベクタライズは強くないと思う
古くからある機能とそうでないものでは最適化に差が出るのは当然
だからこそSIMD使うときはみんなイントリンシック命令使ってるのであって

865 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 20:11:41.99 ID:Xj+Uy2RAd.net]
>>834て誰に対してのレス?

866 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 21:20:25.60 ID:TsUe9Yho0.net]
>>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以降。

>>どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんでサイズは未定にしておきました
要素数が決まってないとコンパイル時に困るので、テンプレートクラスにしちゃったけれど…

867 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 22:05:36.49 ID:TsUe9Yho0.net]
あーいや、 >>828 は配列を渡して初期化したいのか…
↑じゃだめだ

だいぶ別物になっちゃった。
ttps://wandbox.org/permlink/gUlWoKLb3QfigsQk

868 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 22:33:37.26 ID:G5mHfuQa0.net]
参考にしてみた
https://wandbox.org/permlink/3asRA3QSPQXmmn8l
C++17ならヘルパー不要にはなる・・・(コンストラクタに与えた引数から推定
けどどっちにしても配列数可変にはできない

ていうか配列の参照とか初めて使ったw



869 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 00:03:26.14 ID:9PVep4LN0.net]
>>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
}

870 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 00:10:45.61 ID:WRHfxyyT0.net]
糞面倒だな

871 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 00:15:37.45 ID:VIvIbG0Fa.net]
アンチパターンを生み出すための新機能が次々出てくるのがc++だ!

872 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 00:33:17.81 ID:WRHfxyyT0.net]
こういうのからiostreamみたいになってゆくんだろうな

873 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 03:41:10.01 ID:BMt6S/TK0.net]
つか引数にconst double(&temp)[]って何だと渡せるのこれ
()ないとエラー出るし

874 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 06:54:38.61 ID:KlOWaW480.net]
何も渡せないよ
配列数のない配列型はどんな文脈でも不完全型だからその型のオブジェクトは存在し得ない

875 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 07:39:54.12 ID:03NPLOb40.net]
>>842
VS2017 15.7.1のVCのReleaseモードだとtemplateの部分が赤の下波線になるな
Debugモードにするとなぜか消える
そしてReleaseモードはエラーが出ているのにコンパイルして実行可能
バグじゃね

876 名前:はちみつ餃子 mailto:sage [2018/05/19(土) 12:37:22.83 ID:WMhjioR90.net]
>>847
仮引数として表れる場合はポインタに調整されるんじゃなかったっけ?

877 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 13:11:36.50 ID:KlOWaW480.net]
配列型はね
配列の参照型はされない

878 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 09:24:48.82 ID:SHQ/MEmo0.net]
引数で渡す場合は配列自体が参照型だもんな



879 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 21:45:00.90 ID:SySmX4Pj0.net]
配列への参照ってのはあるんだけどね
template <typename T, int N>
N size(T (&)[N]) { return N; }

880 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 21:45:22.62 ID:SySmX4Pj0.net]
あ、ミスった
わかる人笑ってw

881 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:34:44.57 ID:QHYj3MXfM.net]
>>848
> バグじゃね
未定義ならコンパイルできて実行できると言うのも規格に準拠してる正しい動作

882 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:07:12.03 ID:CbgK21am0.net]
>>854
見当違いのレスだな
DebugとReleaseでエディタの動作が首尾一貫してないって言ってるんだがな
15.7.2が来たから入れてみる

883 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:37:39.23 ID:LzyusK+ZM.net]
>>855
普通の知能を持ってたら
> コンパイルして実行可能
に突っ込まれてることぐらいわかるだろうに...

884 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 09:57:56.51 ID:NT2O+rqe0.net]
>>856
15.7.2にしたらReleaseでも赤い波線出なくなったぞ
エディタのバグが直ったようだ

885 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 10:14:09.85 ID:2zsXYckB0.net]
>>848の3行目は無かったことにすると

886 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 10:39:06.93 ID:NT2O+rqe0.net]
だから「エディタの」バグと書き忘れただけなのにお前らしつこいな
DebugモードでもReleaseモードでもコンパイルして実行できてたんだから

887 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 12:24:31.22 ID:fJYH1ZEbM.net]
書き忘れとか知らんがな w
そもそもエディタのバグと言うなら三行目は元々不要
余計なことを書いて突っ込まれるとか低能にありがちな行動ってだけ

888 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 12:33:07.54 ID:8Hna4W5Ya.net]
>>859
気にするな。俺には>>854の方がよほど的はずれなことを言ってると思うよ。



889 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 12:40:43.11 ID:fJYH1ZEbM.net]
>>861
>>856
同じようなレスを書いてループさせるのも低能にありがちな行動

890 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 13:02:27.39 ID:nSCJSr52M.net]
エラーの話なのになぜか未定義とか言い出す奴が

891 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 15:37:22.12 ID:fJYH1ZEbM.net]
未定義の意味を理解してないなら絡んでこない方がいいぞ

892 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 17:20:05.74 ID:CpOh1zRO0.net]
エラー
警告
未定義
不適格

混同するやつが後を絶たないな

893 名前:デフォルトの名無しさん [2018/05/23(水) 19:15:29.66 ID:Au5e7VGg0.net]
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

V9EWM

894 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 21:13:20.83 ID:CpOh1zRO0.net]
しょーもね

895 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 21:13:21.12 ID:fJYH1ZEbM.net]
この文脈でエラーとか警告とか言い出す時点でアホ丸出しなんだが...w

896 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 22:07:04.14 ID:lbYCZF160.net]
VisualStudioはインテリセンスとコンパイルに使うコンパイラが違う
ちょっと設定変えると、とてつもなくエラーが出るのにコンパイルは通るという事態は稀に良くある

897 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 12:25:45.78 ID:hqF4m+XgM.net]
>>838
>>771

898 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 23:58:30.63 ID:XccjINB00.net]
あるコンテナaとコンテナbを連結?するようなクラス(イテレータ)を作りたいんだが

イメージとしてはa.begin()からa.end()-1までいったら次はb.begin()になるようなやつを思い浮かべてるんだけど

どんな風につくればよいかアドバイスください



899 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 00:18:38.25 ID:HgmGhgcw0.net]
>>871
concat_iteratorでググるとそれっぽい実装がチラホラ

900 名前:デフォルトの名無しさん [2018/05/25(金) 10:18:09.43 ID:SC+wi2VoM.net]
C++で2Dのwindowsで動くゲーム作ろうと思っているのだけど、ライブラリって何使えばいいんだ?

901 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 10:18:58.21 ID:AT66E0O7M.net]
GDI

902 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 11:33:06.12 ID:JXMMrzE70.net]
direct2d

903 名前:デフォルトの名無しさん [2018/05/25(金) 12:11:02.95 .net]
Unity

904 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 12:19:23.12 ID:lIIOH/4a0.net]
Opengl

905 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 12:52:26.94 ID:s00mTA6Oa.net]
DirectX Tool Kit

906 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 14:11:55.60 ID:7mkguDclM.net]
cairo

907 名前:デフォルトの名無しさん [2018/05/25(金) 18:33:18.15 ID:vSqqKkie0.net]
いっぱいあるなー、一通り試してみようかな

908 名前:放置された蟻人間 mailto:sage [2018/05/25(金) 18:37:43.90 ID:mtapFpQed.net]
全部は時間的に無理。



909 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 19:06:13.22 ID:O4zlrz7ka.net]
DirectX Tool Kit一択だとおもうが

910 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 19:16:41.38 ID:BiCg0uer0.net]
OpenGLなんてのは?

911 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 19:17:34.72 ID:el+ngQt20.net]
windowsに限定するならopneGLにする意味は薄い

912 名前:デフォルトの名無しさん [2018/05/25(金) 23:32:47.23 ID:vSqqKkie0.net]
DirectX tool kit なるものは一般的なDirectXの上位互換みたいな捉え方でおk?

913 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 23:41:23.37 ID:9e9u/b+G0.net]
>>882
よこからだけど、これ面白そう。

914 名前:はちみつ餃子 mailto:sage [2018/05/26(土) 01:45:05.97 ID:r5N0xqhb0.net]
Siv3D とかも楽に使えると思う。 (3D という名前がついてるけど 2D もいける)

915 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 09:49:22.16 ID:Gw/MbzDj0.net]
今の時代なら cocos 2d とかモバイルでも使えるライブラリ使った方がいいんじゃないのか

916 名前:デフォルトの名無しさん [2018/05/26(土) 10:01:48.35 ID:KfOwUuVld.net]
c++ならアンリアルエンジンで行こうぜ

917 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 15:38:59.11 ID:dTnlF+1t0.net]
あれESCキーが消えるから…

918 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 08:17:20.26 ID:kgP2LOmLa.net]
string::size_type についてですが、

size_type の前についている

「string::」

というのは何ですか?



919 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 08:20:28.98 ID:kgP2LOmLa.net]
名前空間ではないようですし。

920 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 08:28:38.63 ID:HMjaHK3IM.net]
静的メンバ関数
でぐぐれ

921 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 09:38:09.06 ID:kgP2LOmLa.net]
>>893

ありがとうございます。

string::size_type は companion type というものらしいのですが、
この companion type とは何でしょうか?

922 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 12:33:02.70 ID:WLsT9puy0.net]
メンバ関数の引数や戻り値、メンバ変数などで使用するためにクラススコープで定義された型のこと

クラス(この場合はstd::string)を利用する側は、
実際にはその型がなんであるかを知る必要なく
文字列のサイズの型としてstring::size_type を用いることができる

参考
https://stackoverflow.com/questions/41471741/string-companion-types

923 名前:デフォルトの名無しさん [2018/05/29(火) 13:47:00.51 ID:kgP2LOmLa.net]
>>895

ありがとうございました。

924 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 23:46:46.84 ID:vO9YU0hS0.net]
std::threadでサブスレッドで処理をしているのですが、処理をキャンセルするためthreadをdetachすると
メモリを破壊しているようで全然別の箇所で色々なエラーが出てきます。system_errorは送出されていません。
サブスレッドではnewでのリソース確保もしていないので理由がわからないです。

detachする際にはjoinableである以外に条件があるのでしょうか。

925 名前:デフォルトの名無しさん [2018/05/29(火) 23:59:57.19 ID:6Y/6D3P7M.net]
>>897
スレッドローカル記憶域とか破棄されたあとにアクセスしてんじゃないの?

926 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 00:33:26.79 ID:4+P0NcT60.net]
std::threadのdetachってスレッドを手放すだけでキャンセルはしないのでは
ラムダ式で処理を渡してるなら、ローカル変数の参照キャプチャとかしてるない?

927 名前:デフォルトの名無しさん [2018/05/30(水) 00:33:44.46 ID:D8xt/f/p0.net]
detachしてもスレッドは動き続けますが。

928 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 00:56:37.13 ID:OvmXW6ID0.net]
一般にスレッドのキャンセルは難しいので適当に処理を終わらせてjoinするのが良いも思う



929 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 01:10:14.80 ID:K2528e3P0.net]
https://ideone.com/3LDXGx
質問です。定期的に同じ関数をスレッドで起動するクラスを作りました。
んでコード中のここ無駄って書いてある行を削除する方法はありませんか。
開発はVCでやってますが、GCCでも通ればいいなーと思っています。

930 名前:897 mailto:sage [2018/05/30(水) 02:51:38.91 ID:gP4Z92jH0.net]
すみません。言葉足らずでした。
メインスレッド:GUI、サブスレッド:既存のライブラリでデータ補間の重い処理
を担当していて、途中でデータ補間パラメータを変更したくなった場合
キャンセルボタンを押してやり直す、という処理を考えています。
CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。重い処理のループの中にキャンセル用フラグでも用意できればキャンセル通知後
ループを抜けて速やかにjoinするところまで到達させる等の方法があるのですが、
既存ライブラリなのでそうはいかず諦めてdetachしようと考えています。
そのまま走り続けるだけだから結果を回収せずほっておけば良いのかと思ってましたが
甘かったみたいです。
>>898
thread_localは使っていないです。
>>899
アドバイスありがとうございます。関数オブジェクト作ってキャプチャは使っていないです。
>>901
スレッドを平和理に終了させる方法はなさそうなのでdetachできなければ諦めてjoinするしかなさそうですね…

とりあえず最小の再現例を作ってみることにします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef