回答編集履歴
5
追記
answer
CHANGED
|
@@ -17,5 +17,8 @@
|
|
|
17
17
|
0. スレッド2のfprintf_s処理
|
|
18
18
|
0. スレッド1のfprintf_s処理
|
|
19
19
|
|
|
20
|
-
という事が起こり得るので、WriteLineの呼出順で出力順序を保証したいなら、WriteLineの開始終了で同期オブジェクト(クリティカルセクションやmutex)で保護してやる必要があるでしょう。
|
|
20
|
+
という事が起こり得るので、WriteLineの呼出順で出力順序を保証したいなら、WriteLineの開始終了で同期オブジェクト(クリティカルセクションやmutex)で保護してやる必要があるでしょう。シングルスレッドでやるなら、別に気にしなくていいです。
|
|
21
|
+
[Win32APIでスレッド間の排他制御(クリティカルセクション)を行う](https://www.paveway.info/entry/2018/12/14/win32api_criticalsection)
|
|
22
|
+
|
|
21
|
-
最近のC++には疎いけど、もう標準ライブラリで用意されていたりするのかな?
|
|
23
|
+
最近のC++には疎いけど、もう標準ライブラリで用意されていたりするのかな?
|
|
24
|
+
[C++11における同期処理(std::mutex, std::unique_guard, std::lock_guard, std::condition_variable)](https://qiita.com/termoshtt/items/c01745ea4bcc89d37edc)
|
4
修正
answer
CHANGED
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
0. スレッド2のfprintf_s処理
|
|
18
18
|
0. スレッド1のfprintf_s処理
|
|
19
19
|
|
|
20
|
-
という事が起こり得るので、WriteLineの呼出で順序を保証したいなら、WriteLineの開始終了で同期オブジェクト(クリティカルセクションやmutex)で保護してやる必要があるでしょう。
|
|
20
|
+
という事が起こり得るので、WriteLineの呼出順で出力順序を保証したいなら、WriteLineの開始終了で同期オブジェクト(クリティカルセクションやmutex)で保護してやる必要があるでしょう。
|
|
21
21
|
最近のC++には疎いけど、もう標準ライブラリで用意されていたりするのかな?
|
3
追記
answer
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
> ・注意する点(排他制御が必要)などありましたら、教えていただけないでしょうか。
|
|
12
12
|
|
|
13
|
-
fwriteはスレッドセーフなので、fprintf_sも多分スレッドセーフだと思いますが、複数回に分けて呼び出してるなら
|
|
13
|
+
fwriteはスレッドセーフなので、fprintf_sも多分スレッドセーフだと思いますが、複数回に分けて呼び出してるなら、マルチスレッド環境下だと
|
|
14
14
|
|
|
15
15
|
0. スレッド1のfprintf_s処理
|
|
16
16
|
0. スレッド1のfprintf_s処理
|
2
追記
answer
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
1
|
TxtWriterの出力先が固定であるなら、シングルトンにすればよいのではないかと。
|
|
2
|
-
[シングルトンのベターな実装方法](https://qiita.com/kikuuuty/items/fcf5f7df2f0493c437dc)
|
|
2
|
+
[シングルトンのベターな実装方法](https://qiita.com/kikuuuty/items/fcf5f7df2f0493c437dc)
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
[補足の点について]
|
|
6
|
+
> ・TxtWriterクラスは、どのようにしてインスタンス化するのでしょうか?
|
|
7
|
+
|
|
8
|
+
シングルトンクラスにはインスタンス取得用のゲッターを用意します。
|
|
9
|
+
(リンク先の記事だとget_instance() がそれ)
|
|
10
|
+
|
|
11
|
+
> ・注意する点(排他制御が必要)などありましたら、教えていただけないでしょうか。
|
|
12
|
+
|
|
13
|
+
fwriteはスレッドセーフなので、fprintf_sも多分スレッドセーフだと思いますが、複数回に分けて呼び出してるなら
|
|
14
|
+
|
|
15
|
+
0. スレッド1のfprintf_s処理
|
|
16
|
+
0. スレッド1のfprintf_s処理
|
|
17
|
+
0. スレッド2のfprintf_s処理
|
|
18
|
+
0. スレッド1のfprintf_s処理
|
|
19
|
+
|
|
20
|
+
という事が起こり得るので、WriteLineの呼出で順序を保証したいなら、WriteLineの開始終了で同期オブジェクト(クリティカルセクションやmutex)で保護してやる必要があるでしょう。
|
|
21
|
+
最近のC++には疎いけど、もう標準ライブラリで用意されていたりするのかな?
|
1
修正
answer
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
シングルトンにすればよいのではないかと。
|
|
1
|
+
TxtWriterの出力先が固定であるなら、シングルトンにすればよいのではないかと。
|
|
2
2
|
[シングルトンのベターな実装方法](https://qiita.com/kikuuuty/items/fcf5f7df2f0493c437dc)
|