Skip to content

Commit 5894dfc

Browse files
committed
Improve docs around ReentrantSemaphore's reentrancy detection
1 parent 5311393 commit 5894dfc

5 files changed

Lines changed: 247 additions & 0 deletions

File tree

Microsoft.VisualStudio.Threading.sln

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,100 +53,210 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{C1DAF484-7
5353
EndProject
5454
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualStudio.Threading.JointPackage", "src\Microsoft.VisualStudio.Threading.JointPackage\Microsoft.VisualStudio.Threading.JointPackage.csproj", "{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}"
5555
EndProject
56+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "samples", "samples\samples.csproj", "{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}"
57+
EndProject
5658
Global
5759
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5860
Debug|Any CPU = Debug|Any CPU
5961
Debug|NonWindows = Debug|NonWindows
62+
Debug|x64 = Debug|x64
63+
Debug|x86 = Debug|x86
6064
Release|Any CPU = Release|Any CPU
6165
Release|NonWindows = Release|NonWindows
66+
Release|x64 = Release|x64
67+
Release|x86 = Release|x86
6268
EndGlobalSection
6369
GlobalSection(ProjectConfigurationPlatforms) = postSolution
6470
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6571
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|Any CPU.Build.0 = Debug|Any CPU
6672
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
6773
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|NonWindows.Build.0 = Debug|Any CPU
74+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|x64.ActiveCfg = Debug|Any CPU
75+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|x64.Build.0 = Debug|Any CPU
76+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|x86.ActiveCfg = Debug|Any CPU
77+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Debug|x86.Build.0 = Debug|Any CPU
6878
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|Any CPU.ActiveCfg = Release|Any CPU
6979
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|Any CPU.Build.0 = Release|Any CPU
7080
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|NonWindows.ActiveCfg = Release|Any CPU
7181
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|NonWindows.Build.0 = Release|Any CPU
82+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|x64.ActiveCfg = Release|Any CPU
83+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|x64.Build.0 = Release|Any CPU
84+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|x86.ActiveCfg = Release|Any CPU
85+
{536F3F9A-B457-43B8-BC93-CE1C16959037}.Release|x86.Build.0 = Release|Any CPU
7286
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7387
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|Any CPU.Build.0 = Debug|Any CPU
7488
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
7589
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|NonWindows.Build.0 = Debug|Any CPU
90+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|x64.ActiveCfg = Debug|Any CPU
91+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|x64.Build.0 = Debug|Any CPU
92+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|x86.ActiveCfg = Debug|Any CPU
93+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Debug|x86.Build.0 = Debug|Any CPU
7694
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|Any CPU.ActiveCfg = Release|Any CPU
7795
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|Any CPU.Build.0 = Release|Any CPU
7896
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|NonWindows.ActiveCfg = Release|Any CPU
7997
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|NonWindows.Build.0 = Release|Any CPU
98+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|x64.ActiveCfg = Release|Any CPU
99+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|x64.Build.0 = Release|Any CPU
100+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|x86.ActiveCfg = Release|Any CPU
101+
{620ED702-B6DA-4454-BF3E-5494D3652724}.Release|x86.Build.0 = Release|Any CPU
80102
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
81103
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
82104
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
83105
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|NonWindows.Build.0 = Debug|Any CPU
106+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|x64.ActiveCfg = Debug|Any CPU
107+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|x64.Build.0 = Debug|Any CPU
108+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|x86.ActiveCfg = Debug|Any CPU
109+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Debug|x86.Build.0 = Debug|Any CPU
84110
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
85111
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|Any CPU.Build.0 = Release|Any CPU
86112
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|NonWindows.ActiveCfg = Release|Any CPU
87113
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|NonWindows.Build.0 = Release|Any CPU
114+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|x64.ActiveCfg = Release|Any CPU
115+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|x64.Build.0 = Release|Any CPU
116+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|x86.ActiveCfg = Release|Any CPU
117+
{4961AA84-088C-46C0-BAC0-F9E87A9F03A7}.Release|x86.Build.0 = Release|Any CPU
88118
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
89119
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|Any CPU.Build.0 = Debug|Any CPU
90120
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
91121
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|NonWindows.Build.0 = Debug|Any CPU
122+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|x64.ActiveCfg = Debug|Any CPU
123+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|x64.Build.0 = Debug|Any CPU
124+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|x86.ActiveCfg = Debug|Any CPU
125+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Debug|x86.Build.0 = Debug|Any CPU
92126
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|Any CPU.ActiveCfg = Release|Any CPU
93127
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|Any CPU.Build.0 = Release|Any CPU
94128
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|NonWindows.ActiveCfg = Release|Any CPU
95129
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|NonWindows.Build.0 = Release|Any CPU
130+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|x64.ActiveCfg = Release|Any CPU
131+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|x64.Build.0 = Release|Any CPU
132+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|x86.ActiveCfg = Release|Any CPU
133+
{D9BB9FB6-3833-44E8-B7A7-DE729FCE214D}.Release|x86.Build.0 = Release|Any CPU
96134
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
97135
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|Any CPU.Build.0 = Debug|Any CPU
98136
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
99137
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|NonWindows.Build.0 = Debug|Any CPU
138+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|x64.ActiveCfg = Debug|Any CPU
139+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|x64.Build.0 = Debug|Any CPU
140+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|x86.ActiveCfg = Debug|Any CPU
141+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Debug|x86.Build.0 = Debug|Any CPU
100142
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|Any CPU.ActiveCfg = Release|Any CPU
101143
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|Any CPU.Build.0 = Release|Any CPU
102144
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|NonWindows.ActiveCfg = Release|Any CPU
103145
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|NonWindows.Build.0 = Release|Any CPU
146+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|x64.ActiveCfg = Release|Any CPU
147+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|x64.Build.0 = Release|Any CPU
148+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|x86.ActiveCfg = Release|Any CPU
149+
{CBEDB102-ABAE-40B1-AF3F-A6226DB6713D}.Release|x86.Build.0 = Release|Any CPU
104150
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
105151
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
106152
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
107153
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|NonWindows.Build.0 = Debug|Any CPU
154+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|x64.ActiveCfg = Debug|Any CPU
155+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|x64.Build.0 = Debug|Any CPU
156+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|x86.ActiveCfg = Debug|Any CPU
157+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Debug|x86.Build.0 = Debug|Any CPU
108158
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
109159
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|Any CPU.Build.0 = Release|Any CPU
110160
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|NonWindows.ActiveCfg = Release|Any CPU
111161
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|NonWindows.Build.0 = Release|Any CPU
162+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|x64.ActiveCfg = Release|Any CPU
163+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|x64.Build.0 = Release|Any CPU
164+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|x86.ActiveCfg = Release|Any CPU
165+
{BA4643D8-E6B2-4DED-882F-4827F3AB6AB0}.Release|x86.Build.0 = Release|Any CPU
112166
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
113167
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|Any CPU.Build.0 = Debug|Any CPU
114168
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
115169
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|NonWindows.Build.0 = Debug|Any CPU
170+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|x64.ActiveCfg = Debug|Any CPU
171+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|x64.Build.0 = Debug|Any CPU
172+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|x86.ActiveCfg = Debug|Any CPU
173+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Debug|x86.Build.0 = Debug|Any CPU
116174
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|Any CPU.ActiveCfg = Release|Any CPU
117175
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|Any CPU.Build.0 = Release|Any CPU
118176
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|NonWindows.ActiveCfg = Release|Any CPU
119177
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|NonWindows.Build.0 = Release|Any CPU
178+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|x64.ActiveCfg = Release|Any CPU
179+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|x64.Build.0 = Release|Any CPU
180+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|x86.ActiveCfg = Release|Any CPU
181+
{3BDB8F46-A39C-422B-8B0E-89E98B83073F}.Release|x86.Build.0 = Release|Any CPU
120182
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
121183
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|Any CPU.Build.0 = Debug|Any CPU
122184
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
185+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|x64.ActiveCfg = Debug|Any CPU
186+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|x64.Build.0 = Debug|Any CPU
187+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|x86.ActiveCfg = Debug|Any CPU
188+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Debug|x86.Build.0 = Debug|Any CPU
123189
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|Any CPU.ActiveCfg = Release|Any CPU
124190
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|Any CPU.Build.0 = Release|Any CPU
125191
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|NonWindows.ActiveCfg = Release|Any CPU
192+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|x64.ActiveCfg = Release|Any CPU
193+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|x64.Build.0 = Release|Any CPU
194+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|x86.ActiveCfg = Release|Any CPU
195+
{7177DEEE-D14D-4A4A-BF6E-8B0CDC26B624}.Release|x86.Build.0 = Release|Any CPU
126196
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
127197
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|Any CPU.Build.0 = Debug|Any CPU
128198
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
129199
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|NonWindows.Build.0 = Debug|Any CPU
200+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|x64.ActiveCfg = Debug|Any CPU
201+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|x64.Build.0 = Debug|Any CPU
202+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|x86.ActiveCfg = Debug|Any CPU
203+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Debug|x86.Build.0 = Debug|Any CPU
130204
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|Any CPU.ActiveCfg = Release|Any CPU
131205
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|Any CPU.Build.0 = Release|Any CPU
132206
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|NonWindows.ActiveCfg = Release|Any CPU
133207
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|NonWindows.Build.0 = Release|Any CPU
208+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|x64.ActiveCfg = Release|Any CPU
209+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|x64.Build.0 = Release|Any CPU
210+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|x86.ActiveCfg = Release|Any CPU
211+
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA}.Release|x86.Build.0 = Release|Any CPU
134212
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
135213
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|Any CPU.Build.0 = Debug|Any CPU
136214
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
137215
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|NonWindows.Build.0 = Debug|Any CPU
216+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|x64.ActiveCfg = Debug|Any CPU
217+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|x64.Build.0 = Debug|Any CPU
218+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|x86.ActiveCfg = Debug|Any CPU
219+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Debug|x86.Build.0 = Debug|Any CPU
138220
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|Any CPU.ActiveCfg = Release|Any CPU
139221
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|Any CPU.Build.0 = Release|Any CPU
140222
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|NonWindows.ActiveCfg = Release|Any CPU
141223
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|NonWindows.Build.0 = Release|Any CPU
224+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|x64.ActiveCfg = Release|Any CPU
225+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|x64.Build.0 = Release|Any CPU
226+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|x86.ActiveCfg = Release|Any CPU
227+
{8CDF7526-D625-4E16-A266-BAF654ABE181}.Release|x86.Build.0 = Release|Any CPU
142228
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
143229
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
144230
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
145231
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|NonWindows.Build.0 = Debug|Any CPU
232+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|x64.ActiveCfg = Debug|Any CPU
233+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|x64.Build.0 = Debug|Any CPU
234+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|x86.ActiveCfg = Debug|Any CPU
235+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Debug|x86.Build.0 = Debug|Any CPU
146236
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
147237
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|Any CPU.Build.0 = Release|Any CPU
148238
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|NonWindows.ActiveCfg = Release|Any CPU
149239
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|NonWindows.Build.0 = Release|Any CPU
240+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|x64.ActiveCfg = Release|Any CPU
241+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|x64.Build.0 = Release|Any CPU
242+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|x86.ActiveCfg = Release|Any CPU
243+
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB}.Release|x86.Build.0 = Release|Any CPU
244+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
245+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
246+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|NonWindows.ActiveCfg = Debug|Any CPU
247+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|NonWindows.Build.0 = Debug|Any CPU
248+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|x64.ActiveCfg = Debug|Any CPU
249+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|x64.Build.0 = Debug|Any CPU
250+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|x86.ActiveCfg = Debug|Any CPU
251+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Debug|x86.Build.0 = Debug|Any CPU
252+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
253+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|Any CPU.Build.0 = Release|Any CPU
254+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|NonWindows.ActiveCfg = Release|Any CPU
255+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|NonWindows.Build.0 = Release|Any CPU
256+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|x64.ActiveCfg = Release|Any CPU
257+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|x64.Build.0 = Release|Any CPU
258+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|x86.ActiveCfg = Release|Any CPU
259+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9}.Release|x86.Build.0 = Release|Any CPU
150260
EndGlobalSection
151261
GlobalSection(SolutionProperties) = preSolution
152262
HideSolutionNode = FALSE
@@ -163,6 +273,7 @@ Global
163273
{D5A0D627-7853-43F5-9AF4-E23D062C6ABA} = {96134B19-FB32-4FA0-A565-BD4247D1E5B2}
164274
{8CDF7526-D625-4E16-A266-BAF654ABE181} = {96134B19-FB32-4FA0-A565-BD4247D1E5B2}
165275
{D149A8B3-A98F-4EDD-8C12-5CCDCBFB68DB} = {96134B19-FB32-4FA0-A565-BD4247D1E5B2}
276+
{52D4D516-3AA0-4A2B-ACF7-70FE9315B0D9} = {C1DAF484-769B-4C5E-9DD1-A4CFAA66E938}
166277
EndGlobalSection
167278
GlobalSection(ExtensibilityGlobals) = postSolution
168279
SolutionGuid = {E2124DFF-970E-4BA1-9E50-3ADB0AABF347}

samples/.editorconfig

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
[*.cs]
2+
3+
indent_style = space
4+
5+
# SA1108: Block statements should not contain embedded comments
6+
dotnet_diagnostic.SA1108.severity = none
7+
8+
# SA1123: Do not place regions within elements
9+
dotnet_diagnostic.SA1123.severity = none
10+
11+
# SA1124: Do not use regions
12+
dotnet_diagnostic.SA1124.severity = none
13+
14+
# SA1200: Using directives should be placed correctly
15+
dotnet_diagnostic.SA1200.severity = none
16+
17+
# SA1201: Elements should appear in the correct order
18+
dotnet_diagnostic.SA1201.severity = silent
19+
20+
# SA1205: Partial elements should declare access
21+
dotnet_diagnostic.SA1205.severity = none
22+
23+
# SA1400: Access modifier should be declared
24+
dotnet_diagnostic.SA1400.severity = none
25+
26+
# SA1402: File may only contains a single type
27+
dotnet_diagnostic.SA1402.severity = none
28+
29+
# SA1403: File may only contain a single namespace
30+
dotnet_diagnostic.SA1403.severity = none
31+
32+
# SA1502: Element should not be on a single line
33+
dotnet_diagnostic.SA1502.severity = none
34+
35+
# SA1515: Single-line comment should be preceded by blank line
36+
dotnet_diagnostic.SA1515.severity = none
37+
38+
# SA1516: Elements should be separated by blank line
39+
dotnet_diagnostic.SA1516.severity = none
40+
41+
# SA1600: Elements should be documented
42+
dotnet_diagnostic.SA1600.severity = silent
43+
44+
# SA1601: Partial elements should be documented
45+
dotnet_diagnostic.SA1601.severity = silent
46+
47+
# SA1649: File name should match first type name
48+
dotnet_diagnostic.SA1649.severity = none
49+
50+
# IDE0051: Remove unused private members
51+
dotnet_diagnostic.IDE0051.severity = none
52+
53+
# CS1591: Missing XML comment for publicly visible type or member
54+
dotnet_diagnostic.CS1591.severity = silent
55+
56+
# CA1822: Mark members as static
57+
dotnet_diagnostic.CA1822.severity = silent
58+
59+
# CA1062: Validate arguments of public methods
60+
dotnet_diagnostic.CA1062.severity = silent

samples/ApiSamples.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
using System.Threading;
5+
using System.Threading.Tasks;
6+
using Microsoft.VisualStudio.Threading;
7+
8+
public class SuppressRelevanceSample
9+
{
10+
private readonly ReentrantSemaphore semaphore = ReentrantSemaphore.Create(mode: ReentrantSemaphore.ReentrancyMode.NotAllowed);
11+
12+
#region SuppressRelevance
13+
public async Task DoSomethingAsync()
14+
{
15+
await this.semaphore.ExecuteAsync(async delegate
16+
{
17+
// field access under the semaphore
18+
// ...
19+
await Task.Yield(); // represents some async work
20+
21+
// Fire and forget code that uses the semaphore, but should *not*
22+
// inherit our own posession of the semaphore.
23+
using (this.semaphore.SuppressRelevance())
24+
{
25+
this.DoSomethingLaterAsync().Forget(); // Don't await this, or a deadlock will occur.
26+
}
27+
});
28+
}
29+
30+
private async Task DoSomethingLaterAsync()
31+
{
32+
// This semaphore use will not be seen as nested because of our caller's wrapping
33+
// the call in SuppressRelevance.
34+
// So instead of throwing, it will block till its caller releases the semaphore.
35+
await this.semaphore.ExecuteAsync(async delegate
36+
{
37+
// Whatever
38+
await Task.Yield(); // represents some async work
39+
});
40+
}
41+
#endregion
42+
}

0 commit comments

Comments
 (0)