質問するログイン新規登録

回答編集履歴

5

追記

2021/08/31 05:08

投稿

退会済みユーザー
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

修正

2021/08/31 05:08

投稿

退会済みユーザー
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

追記

2021/08/31 04:56

投稿

退会済みユーザー
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

追記

2021/08/31 04:54

投稿

退会済みユーザー
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

修正

2021/08/31 04:53

投稿

退会済みユーザー
answer CHANGED
@@ -1,2 +1,2 @@
1
- シングルトンにすればよいのではないかと。
1
+ TxtWriterの出力先が固定であるなら、シングルトンにすればよいのではないかと。
2
2
  [シングルトンのベターな実装方法](https://qiita.com/kikuuuty/items/fcf5f7df2f0493c437dc)