Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #117659 > unrolled thread
| Started by | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| First post | 2023-11-08 15:56 +0100 |
| Last post | 2023-11-13 22:46 -0800 |
| Articles | 20 on this page of 259 — 9 participants |
Back to article view | Back to comp.lang.c++
A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-08 15:56 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-08 19:31 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-08 20:56 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-08 23:25 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 05:33 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 20:36 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 05:38 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 20:42 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:08 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:11 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:12 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:17 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:35 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:39 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:40 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:41 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:42 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:44 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:44 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:45 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:48 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:50 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:58 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 22:46 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:52 +0100
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-14 21:10 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-15 06:07 +0100
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-17 21:16 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-18 04:06 +0100
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-18 12:53 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-18 20:04 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-18 19:24 +0000
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-18 20:29 +0000
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-18 21:46 +0000
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-18 20:18 -0500
Re: A Java- / .NET-like monitor Michael S <already5chosen@yahoo.com> - 2023-11-24 01:14 +0200
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-23 21:35 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-24 08:59 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-24 01:17 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-24 10:25 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-24 15:59 +0000
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-24 18:33 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-24 15:39 -0800
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-25 00:08 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-24 16:27 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-25 14:47 -0800
Re: A Java- / .NET-like monitor "Fred. Zwarts" <F.Zwarts@HetNet.nl> - 2023-11-25 13:02 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-25 17:28 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-25 18:48 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-25 18:09 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-25 13:12 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-25 18:10 +0000
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-25 19:30 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-25 14:57 -0800
Re: A Java- / .NET-like monitor Michael S <already5chosen@yahoo.com> - 2023-11-26 01:29 +0200
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-25 15:56 -0800
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-26 13:54 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-26 14:38 +0100
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-26 16:28 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-26 18:51 +0100
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-26 20:27 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-26 14:38 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-26 15:00 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 05:23 +0100
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-27 10:38 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 10:55 +0100
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-27 11:19 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 12:32 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-26 22:55 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 15:15 -0800
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-28 09:03 +0100
Re: A Java- / .NET-like monitor David Brown <david.brown@hesbynett.no> - 2023-11-25 13:58 +0100
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-18 20:09 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-19 05:58 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-19 05:02 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-19 07:00 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-19 06:08 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-19 12:05 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-19 12:08 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-19 12:11 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-19 12:17 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-20 13:26 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-20 12:18 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-21 10:25 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-23 21:38 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-24 08:56 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-24 01:22 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-24 19:10 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-24 15:43 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-25 13:04 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-25 15:06 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-26 11:35 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-26 15:45 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 05:24 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-26 22:22 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 08:57 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 00:28 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-27 09:34 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 14:59 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 14:59 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 15:19 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-28 15:13 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-18 12:46 -0800
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-18 21:47 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-18 14:02 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-18 20:20 -0500
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-20 13:12 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 08:01 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 08:01 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:50 +0100
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-11 17:45 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-12 05:43 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-12 05:02 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-12 11:00 +0100
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-12 17:18 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-13 07:33 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-13 07:47 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 12:50 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 06:20 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 21:21 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 07:44 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 22:51 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 22:55 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 08:00 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 08:07 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 23:08 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 23:07 -0800
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-14 15:18 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 16:46 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-14 16:09 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 17:41 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 18:41 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 12:25 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 14:25 -0800
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-14 22:50 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:07 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-15 05:57 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:08 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-16 03:59 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-16 15:02 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-16 18:12 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-16 17:45 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-27 15:24 -0800
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-12 17:53 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-12 12:51 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-12 19:33 -0500
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-13 04:50 +0000
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-13 22:05 -0500
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-14 03:30 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 22:35 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-14 20:26 -0500
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:11 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-15 23:07 -0500
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-16 06:39 +0000
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-16 21:48 -0500
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-17 16:29 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-17 10:22 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-17 18:37 +0000
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-18 00:45 +0000
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-18 02:30 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-16 11:11 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-13 07:35 +0100
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-13 15:05 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-13 16:36 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-13 17:24 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-12 12:48 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-12 19:29 -0500
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-12 16:44 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-16 14:16 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-13 04:48 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 14:32 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-13 21:27 -0500
Re: A Java- / .NET-like monitor scott@slp53.sl.home (Scott Lurndal) - 2023-11-14 15:12 +0000
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-14 20:35 -0500
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-13 21:58 -0500
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-14 03:27 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 21:28 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 21:29 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-14 20:47 -0500
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:18 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:20 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-15 21:26 +0000
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-16 00:25 -0500
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-14 20:42 -0500
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-28 15:32 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-12 19:17 -0500
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-09 05:17 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:18 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:20 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:19 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:20 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-08 23:51 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:10 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 15:32 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 05:35 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:17 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:22 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:27 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:29 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:31 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:34 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:36 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 06:40 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:42 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 07:32 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 22:54 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 23:01 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 23:03 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:30 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 21:32 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 14:59 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-08 19:49 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-08 18:16 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 13:49 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 05:37 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 20:40 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 20:39 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 13:41 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 05:36 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-08 20:41 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-08 18:16 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 10:07 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-09 01:11 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-09 10:17 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-09 01:22 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-09 01:23 -0800
Re: A Java- / .NET-like monitor Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2023-11-10 13:56 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-10 15:08 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-10 15:15 +0100
Re: A Java- / .NET-like monitor Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2023-11-11 02:59 +0000
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-10 12:44 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-11 04:53 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-10 20:09 -0800
Re: A Java- / .NET-like monitor Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2023-11-11 04:25 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-11 07:07 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-11 11:41 +0100
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-11 16:39 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-11 11:42 -0800
Re: A Java- / .NET-like monitor Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-11-11 17:49 -0500
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-12 05:40 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-12 12:46 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 23:13 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 10:04 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 01:21 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 11:00 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 02:08 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-14 11:23 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 12:27 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-14 12:29 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-15 05:54 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 12:21 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-16 04:00 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-15 19:10 -0800
Re: A Java- / .NET-like monitor Kaz Kylheku <864-117-4973@kylheku.com> - 2023-11-16 03:21 +0000
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-16 06:36 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-16 13:06 -0800
Re: A Java- / .NET-like monitor Bonita Montero <Bonita.Montero@gmail.com> - 2023-11-17 06:57 +0100
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-11 11:41 -0800
Re: A Java- / .NET-like monitor "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-11-13 22:46 -0800
Page 1 of 13 [1] 2 3 … 13 Next page →
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-08 15:56 +0100 |
| Subject | A Java- / .NET-like monitor |
| Message-ID | <uig7jl$1l4v0$1@raubtier-asyl.eternal-september.org> |
Java and .NET have monitor objects instead of a combination of mutexes
and condition variables. The advantage of a monitor object is that when
you wait for a monitor to be signalled you can wait for that and for the
mutexe's semaphore to be unlocked in _one_ step. With a condition varia-
ble you have first to wait for the notify()-semaphore to be signalled
and for the mutexe's lock in two steps.
The below code simply has a 32 or 64 bit atomic (depening on if the 64
bit variant is lock-free or not) and the lower half is the number of
threads waiting to enter the mutex part and the upper half is the num-
ber of threads waiting to be notified. As all threads wanting to be
notified are also waiting for the mutex the lower half is always >=
the upper half, which I check for in several asserts.
On Windows waiting to be notified and waiting to lock the mutex part
to be unlocked is done by WaitForMultipleObjects(). On Linux there's
no way to wait for mutliple kernel handles to be signalled, but there
are SystemV semaphore sets which may consist of several semaphores and
you may have multiple operations to proceed atomically on this set.
The drawback of combining the mutex and condition-variable parts is
that you can't have multiple conditions associated with the same mutex.
// monitor.h
#pragma once
#if defined(_WIN32)
#define NOMINMAX
#include <Windows.h>
#elif defined(__unix__)
#include <sys/types.h>
#include <sys/sem.h>
#include <sys/stat.h>
#else
#error unsupported platform
#endif
#include <atomic>
#include <semaphore>
#include <type_traits>
#if defined(_WIN32)
#include "xhandle.h"
#endif
struct monitor
{
monitor();
~monitor();
void lock();
void unlock();
void wait();
void notify();
void notify_all();
private:
inline static thread_local char t_dummy;
static constexpr bool USE64 = std::atomic_int64_t::is_always_lock_free;
using atomic_word_t = std::conditional_t<USE64, uint64_t, uint32_t>;
static constexpr unsigned BITS = USE64 ? 32 : 16;
static constexpr atomic_word_t
ENTER_VALUE = 1,
SIGNAL_VALUE = USE64 ? 1ull << 32 : 1,
ENTER_MASK = USE64 ? (uint32_t)-1 : (uint16_t)-1,
SIGNAL_MASK = USE64 ? (uint64_t)(uint32_t)-1 << 32 :
(uint32_t)(uint16_t)-1 << 16;
std::atomic<atomic_word_t> m_atomic;
std::atomic<char *> m_threadId;
std::atomic_uint32_t m_recCount;
#if defined(_WIN32)
static constexpr uint32_t SEM_MAX = std::numeric_limits<LONG>::max();
XHANDLE
m_xhEnterEvt,
m_xhSignalSem;
#elif defined(__unix__)
static constexpr uint32_t SEM_MAX = std::numeric_limits<short>::max();
int m_sems;
int semop( std::initializer_list<sembuf> sems );
#endif
};
// monitor.cpp
#include <iostream>
#include <limits>
#include <system_error>
#include <cassert>
#include "monitor.h"
using namespace std;
monitor::monitor() :
m_atomic( 0 ),
m_threadId( nullptr )
#if defined(_WIN32)
, m_xhEnterEvt( CreateEventA( nullptr, FALSE, FALSE, nullptr ) ),
m_xhSignalSem( CreateSemaphoreA( nullptr, 0, SEM_MAX, nullptr ) )
#elif defined(__unix__)
, m_sems( semget( IPC_PRIVATE, 2, S_IRUSR | S_IWUSR ) )
#endif
{
#if defined(_WIN32)
if( !m_xhEnterEvt.get() || !m_xhSignalSem.get() )
throw system_error( GetLastError(), system_category(), "can't
initialize monitor object" );
#elif defined(__unix__)
union semun { int val; void *p; } su;
su.val = 0;
#if defined(__linux__)
if( m_sems == -1 )
#else
if( m_sems == -1 || semctl( m_sems, 0, SETVAL, su ) == -1 || semctl(
m_sems, 1, SETVAL, su ) == -1 )
#endif
throw system_error( errno, system_category(), "can't initialize
monitor object" );
#endif
}
monitor::~monitor()
{
#if defined(__unix__)
int ret = semctl( m_sems, 0, IPC_RMID );
assert(ret != -1);
#endif
}
void monitor::lock()
{
if( m_threadId.load( memory_order_relaxed ) == &t_dummy )
{
uint32_t oldRecCount = m_recCount.load( memory_order_relaxed );
if( oldRecCount == (uint32_t)-1 )
throw system_error( (int)errc::result_out_of_range,
generic_category(), "montor's recursion count saturated" );
m_recCount.store( oldRecCount + 1, memory_order_relaxed );
return;
}
atomic_word_t ref = m_atomic.load( memory_order_relaxed );
do
{
if( (ref & ENTER_MASK) == ENTER_MASK )
throw system_error( (int)errc::result_out_of_range,
generic_category(), "montor's locker count saturated" );
assert((ref & ENTER_MASK) >= ref >> BITS);
} while( !m_atomic.compare_exchange_strong( ref, ref + 1,
memory_order_acquire, memory_order_relaxed ) );
auto initThread = [&]()
{
m_threadId.store( &t_dummy, memory_order_relaxed );
m_recCount.store( 0, memory_order_relaxed );
};
if( (ref & ENTER_MASK) == ref >> BITS ) [[likely]]
return initThread();
#if defined(_WIN32)
if( WaitForSingleObject( m_xhEnterEvt.get(), INFINITE ) != WAIT_OBJECT_0 )
terminate();
#elif defined(__unix__)
if( semop( { { 0, -1, 0 } } ) )
terminate();
#endif
initThread();
}
void monitor::unlock()
{
if( uint32_t rc; m_threadId.load( memory_order_relaxed ) == &t_dummy &&
(rc = m_recCount.load( memory_order_relaxed )) )
{
m_recCount.store( rc - 1, memory_order_relaxed );
return;
}
atomic_word_t ref = m_atomic.load( memory_order_relaxed );
assert((ref & ENTER_MASK) && m_threadId == &t_dummy);
m_threadId.store( nullptr, memory_order_relaxed );
do
assert((ref & ENTER_MASK) >= ref >> BITS);
while( !m_atomic.compare_exchange_strong( ref, ref - 1,
memory_order_release, memory_order_relaxed ) );
if( (ref & ENTER_MASK) == 1 ) [[likely]]
return;
#if defined(_WIN32)
if( !SetEvent( m_xhEnterEvt.get() ) )
terminate();
#elif defined(__unix__)
if( semop( { { 0, 1, IPC_NOWAIT } } ) )
terminate();
#endif
}
void monitor::wait()
{
assert(m_threadId == &t_dummy && !m_recCount);
m_threadId.store( nullptr, memory_order_relaxed );
atomic_word_t ref = m_atomic.load( memory_order_relaxed );
do
assert((ref & ENTER_MASK) > ref >> BITS);
while( !m_atomic.compare_exchange_strong( ref, ref + SIGNAL_VALUE,
memory_order_release, memory_order_relaxed ) );
if( (ref & ENTER_MASK) - (ref >> BITS) > 1 )
{
#if defined(_WIN32)
if( !SetEvent( m_xhEnterEvt.get() ) )
terminate();
#elif defined(__unix__)
if( semop( { { 0, 1, IPC_NOWAIT } } ) )
terminate();
#endif
}
#if defined(_WIN32)
HANDLE waitFor[2] { m_xhEnterEvt.get(), m_xhSignalSem.get() };
if( WaitForMultipleObjects( 2, waitFor, TRUE, INFINITE ) != WAIT_OBJECT_0 )
terminate();
#elif defined(__unix__)
if( semop( { { 0, -1, 0 }, { 1, -1, 0 } } ) )
terminate();
#endif
m_threadId.store( &t_dummy, memory_order_relaxed );
m_recCount.store( 0, memory_order_relaxed );
}
void monitor::notify()
{
atomic_word_t ref = m_atomic.load( memory_order_relaxed );
assert((ref & ENTER_MASK) > ref >> BITS && m_threadId == &t_dummy);
uint32_t n;
while( (n = (uint32_t)(ref >> BITS)) &&
!m_atomic.compare_exchange_strong( ref, ref - SIGNAL_VALUE,
memory_order_relaxed, memory_order_relaxed ) );
if( !(ref >> BITS) )
return;
#if defined(_WIN32)
if( !ReleaseSemaphore( m_xhSignalSem.get(), 1, nullptr ) )
terminate();
#elif defined(__unix__)
int ret;
do
ret = semop( { { 1, 1, IPC_NOWAIT } } );
while( ret == EAGAIN );
if( ret )
terminate();
#endif
}
void monitor::notify_all()
{
atomic_word_t ref = m_atomic.load( memory_order_relaxed );
assert((ref & ENTER_MASK) > ref >> BITS && m_threadId == &t_dummy);
uint32_t n;
while( (n = (uint32_t)(ref >> BITS)) &&
!m_atomic.compare_exchange_strong( ref, ref & ENTER_MASK,
memory_order_relaxed, memory_order_relaxed ) );
while( n )
{
uint32_t nRelease = n <= SEM_MAX ? n : SEM_MAX;
#if defined(_WIN32)
BOOL succ;
for( ; !(succ = ReleaseSemaphore( m_xhSignalSem.get(), nRelease,
nullptr )) && GetLastError() == ERROR_TOO_MANY_POSTS;
nRelease = nRelease > 1 ? nRelease / 2 : nRelease );
if( !succ )
terminate();
#elif defined(__unix__)
int ret;
for( ; (ret = semop( { { 1, (short)nRelease, IPC_NOWAIT } } )) == EAGAIN;
nRelease = nRelease > 1 ? nRelease / 2 : nRelease );
if( ret )
terminate();
#endif
n -= nRelease;
}
}
#if defined(__unix__)
int monitor::semop( initializer_list<sembuf> sems )
{
int ret;
while( (ret = ::semop( m_sems, const_cast<sembuf *>(sems.begin()),
sems.size() )) == EINTR );
return ret;
}
#endif
[toc] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-08 19:31 +0100 |
| Message-ID | <uigk5o$1nmku$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117659 |
Am 08.11.2023 um 19:16 schrieb Kaz Kylheku: > POSIX-style mutexes and condition variables are actually Mesa-style > monitors. A monitor is different because the mutex and condition variable is joined in a monitor which allows the shown optimization while waiting to be notified. > That's an internal detail. In the POSIX API, you have pthread_cond_wait, > which looks like one operation to the caller. The mentioned optimization isn't possible if you don't join the mutex with the condition variable as I've shown; or more precisely there's a limit on the number of conditions as explained below. > The problem is that you often want multiple condition variables with > one monitor. So this is a nonstarter. If that would be often Java and .net would provide that. > I suggest you make an API where the wait operation has an "int cond_index" > parameter to select a condition variable. I've got a value which is usually 64 bit where the lower half is the numer if theads which want to have exclusive access to the mutex. The upper half is the number of threads that want to be notified. I thought I could split the 64 bit value in three parts, one for the first threads and two for the latter two types of threads. But from my eperience with Java and .net I thought that it doesn't happen often that you need two separate monitors to have twoo conditions, so I dropped this idea. > The monitor object can be told at construction time how large a vector > of condition variables is required. Then I'd had to make my atomic even more split and the number of threads being able to register in the bitfields of the atomic would be too limited. My code is to take advantage of the one-step approach while waiting to be notified and if you need more conditions beyond that you'd have to stick with the two kernel calls used with a normal mutex and condition variable.
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-08 20:56 +0100 |
| Message-ID | <uigp4n$1onpc$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117660 |
Am 08.11.2023 um 20:49 schrieb Kaz Kylheku: > No, the "monitor" idea you're proposing is different in this > way. That's not true. That spurious wakesups may happen with a mutex and a condition variable are constituted in that both are separate enti- ties. Spuriuos wakesups never happen with my implementation, but stolen wakeups are still possible. > Monitors as they are understood in computer science (first described by > C. A. R. Hoare) do not combine the monitor and condition variables into > one object; they are distinct entities: one monitor, zero to many > conditions. The way monitors work does not suggest an implementation, or they can be based internally on a mutex and a condition variable, but if you have a monitor that never has spurious wakeups, it is implemented like mine. > To avoid muddying the debate with nonstandard terminology, you might > want to call your cockamamie idea "bonitor". I've implemented a monitor without spurious wakeups.
[toc] | [prev] | [next] | [standalone]
| From | Kaz Kylheku <864-117-4973@kylheku.com> |
|---|---|
| Date | 2023-11-08 23:25 +0000 |
| Message-ID | <20231108152102.495@kylheku.com> |
| In reply to | #117663 |
On 2023-11-08, Bonita Montero <Bonita.Montero@gmail.com> wrote:
> Am 08.11.2023 um 20:49 schrieb Kaz Kylheku:
>
>> No, the "monitor" idea you're proposing is different in this
>> way.
>
> That's not true. That spurious wakesups may happen with a mutex and
> a condition variable are constituted in that both are separate enti-
> ties.
That doesn't follow. Hoare's original monitor implementation had
separate condition variables, yet no spurious wakeups.
In fact, the condition wait did not require loops! Just:
if (!whatever_condition)
monitor.wait(whatever_cond_var);
The thread waiting on the condition was guaranteed to get into
the monitor with the condition still true!
The reason we accept spurious wakeups is that the guarantee is not
efficient on systems with multiple processors, not because
we don't know how to code up the guarantee.
Spurious wakesup are part of the "Mesa semantics" of monitors
and condition variables, in contrast to the "Hoare semantics".
> I've implemented a monitor without spurious wakeups.
It doesn't look like a monitor, if it doesn't have multiple condition
variables. Maybe your approach can support that.
--
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca
NOTE: If you use Google Groups, I don't see you, unless you're whitelisted.
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 05:33 +0100 |
| Message-ID | <uihnei$21tq7$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117669 |
Am 09.11.2023 um 00:25 schrieb Kaz Kylheku: > Spurious wakesup are part of the "Mesa semantics" of monitors > and condition variables, in contrast to the "Hoare semantics". Hoare monitors suck since they are less efficient.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 20:36 -0800 |
| Message-ID | <uihnkd$21rae$1@dont-email.me> |
| In reply to | #117673 |
On 11/8/2023 8:33 PM, Bonita Montero wrote: > Am 09.11.2023 um 00:25 schrieb Kaz Kylheku: > >> Spurious wakesup are part of the "Mesa semantics" of monitors >> and condition variables, in contrast to the "Hoare semantics". > > Hoare monitors suck since they are less efficient. Humm... Are you okay Bonita? Anything wrong with you?
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 05:38 +0100 |
| Message-ID | <uihnnm$21tq7$5@raubtier-asyl.eternal-september.org> |
| In reply to | #117676 |
Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: > Humm... Are you okay Bonita? Anything wrong with you? Hoare monitors relase a waiting thread immediately after a notify() and that's less efficient.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 20:42 -0800 |
| Message-ID | <uihnup$21rab$4@dont-email.me> |
| In reply to | #117679 |
On 11/8/2023 8:38 PM, Bonita Montero wrote: > Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: > >> Humm... Are you okay Bonita? Anything wrong with you? > > Hoare monitors relase a waiting thread immediately after a notify() > and that's less efficient. > Yawn.
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 06:08 +0100 |
| Message-ID | <uihpgl$227kv$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117683 |
Am 09.11.2023 um 05:42 schrieb Chris M. Thomasson: > On 11/8/2023 8:38 PM, Bonita Montero wrote: >> Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: >> >>> Humm... Are you okay Bonita? Anything wrong with you? >> >> Hoare monitors relase a waiting thread immediately after a notify() >> and that's less efficient. > Yawn. Re-acquiring the mutex part of a monitor after notify() is an superfluous extra part that takes CPU time.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:11 -0800 |
| Message-ID | <uihpmf$228mv$1@dont-email.me> |
| In reply to | #117692 |
On 11/8/2023 9:08 PM, Bonita Montero wrote: > Am 09.11.2023 um 05:42 schrieb Chris M. Thomasson: >> On 11/8/2023 8:38 PM, Bonita Montero wrote: >>> Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: >>> >>>> Humm... Are you okay Bonita? Anything wrong with you? >>> >>> Hoare monitors relase a waiting thread immediately after a notify() >>> and that's less efficient. > >> Yawn. > > Re-acquiring the mutex part of a monitor after notify() > is an superfluous extra part that takes CPU time. Look up wait morphing.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:12 -0800 |
| Message-ID | <uihpo2$228mv$2@dont-email.me> |
| In reply to | #117694 |
On 11/8/2023 9:11 PM, Chris M. Thomasson wrote: > On 11/8/2023 9:08 PM, Bonita Montero wrote: >> Am 09.11.2023 um 05:42 schrieb Chris M. Thomasson: >>> On 11/8/2023 8:38 PM, Bonita Montero wrote: >>>> Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: >>>> >>>>> Humm... Are you okay Bonita? Anything wrong with you? >>>> >>>> Hoare monitors relase a waiting thread immediately after a notify() >>>> and that's less efficient. >> >>> Yawn. >> >> Re-acquiring the mutex part of a monitor after notify() >> is an superfluous extra part that takes CPU time. > > Look up wait morphing. Well, I am referring to times of contention.
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 06:17 +0100 |
| Message-ID | <uihq1g$2290l$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117694 |
Am 09.11.2023 um 06:11 schrieb Chris M. Thomasson: > On 11/8/2023 9:08 PM, Bonita Montero wrote: >> Am 09.11.2023 um 05:42 schrieb Chris M. Thomasson: >>> On 11/8/2023 8:38 PM, Bonita Montero wrote: >>>> Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: >>>> >>>>> Humm... Are you okay Bonita? Anything wrong with you? >>>> >>>> Hoare monitors relase a waiting thread immediately after a notify() >>>> and that's less efficient. >> >>> Yawn. >> >> Re-acquiring the mutex part of a monitor after notify() >> is an superfluous extra part that takes CPU time. > > Look up wait morphing. Wait morphing isn't implemented with glibc's condition variables. My code doen't need that because I'm sleeping on the condvar part and on the mutex part in *one* step.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:35 -0800 |
| Message-ID | <uihr3u$228mv$11@dont-email.me> |
| In reply to | #117696 |
On 11/8/2023 9:17 PM, Bonita Montero wrote: > Am 09.11.2023 um 06:11 schrieb Chris M. Thomasson: >> On 11/8/2023 9:08 PM, Bonita Montero wrote: >>> Am 09.11.2023 um 05:42 schrieb Chris M. Thomasson: >>>> On 11/8/2023 8:38 PM, Bonita Montero wrote: >>>>> Am 09.11.2023 um 05:36 schrieb Chris M. Thomasson: >>>>> >>>>>> Humm... Are you okay Bonita? Anything wrong with you? >>>>> >>>>> Hoare monitors relase a waiting thread immediately after a notify() >>>>> and that's less efficient. >>> >>>> Yawn. >>> >>> Re-acquiring the mutex part of a monitor after notify() >>> is an superfluous extra part that takes CPU time. >> >> Look up wait morphing. > > Wait morphing isn't implemented with glibc's condition variables. > My code doen't need that because I'm sleeping on the condvar part > and on the mutex part in *one* step. > Wait morphing is a way that shows how interconnected a mutex actually is with a condition variable...
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 06:39 +0100 |
| Message-ID | <uihram$22gqs$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117710 |
Am 09.11.2023 um 06:35 schrieb Chris M. Thomasson: > Wait morphing is a way that shows how interconnected a mutex actually is > with a condition variable... As you can derive from what I said I know what wait morphing is. I think wait morphing could be prevented unter systems supporting SysV seamphores by allocating a semaphore set of two semaphores for each mutex and leaving the second unused until you have a condition variable.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:40 -0800 |
| Message-ID | <uihrd6$228mv$13@dont-email.me> |
| In reply to | #117712 |
On 11/8/2023 9:39 PM, Bonita Montero wrote: > Am 09.11.2023 um 06:35 schrieb Chris M. Thomasson: > >> Wait morphing is a way that shows how interconnected a mutex actually >> is with a condition variable... > > As you can derive from what I said I know what wait morphing is. > I think wait morphing could be prevented unter systems supporting > SysV seamphores by allocating a semaphore set of two semaphores > for each mutex and leaving the second unused until you have a > condition variable. > Can you move waitsets over from mutex to futex and vise versa?
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:41 -0800 |
| Message-ID | <uihreh$228mv$14@dont-email.me> |
| In reply to | #117714 |
On 11/8/2023 9:40 PM, Chris M. Thomasson wrote: > On 11/8/2023 9:39 PM, Bonita Montero wrote: >> Am 09.11.2023 um 06:35 schrieb Chris M. Thomasson: >> >>> Wait morphing is a way that shows how interconnected a mutex actually >>> is with a condition variable... >> >> As you can derive from what I said I know what wait morphing is. >> I think wait morphing could be prevented unter systems supporting >> SysV seamphores by allocating a semaphore set of two semaphores >> for each mutex and leaving the second unused until you have a >> condition variable. >> > > Can you move waitsets over from mutex to futex and vise versa? This is in the kernel...
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 06:42 +0100 |
| Message-ID | <uihrg6$22hup$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117714 |
Am 09.11.2023 um 06:40 schrieb Chris M. Thomasson: > Can you move waitsets over from mutex to futex and vise versa? glibc doesn't do this either.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:44 -0800 |
| Message-ID | <uihrj7$228mv$16@dont-email.me> |
| In reply to | #117717 |
On 11/8/2023 9:42 PM, Bonita Montero wrote: > Am 09.11.2023 um 06:40 schrieb Chris M. Thomasson: > >> Can you move waitsets over from mutex to futex and vise versa? > > glibc doesn't do this either. Wait morphing is not in the realm of the compiler. It's in the kernel.
[toc] | [prev] | [next] | [standalone]
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Date | 2023-11-08 21:44 -0800 |
| Message-ID | <uihrko$228mv$17@dont-email.me> |
| In reply to | #117718 |
On 11/8/2023 9:44 PM, Chris M. Thomasson wrote: > On 11/8/2023 9:42 PM, Bonita Montero wrote: >> Am 09.11.2023 um 06:40 schrieb Chris M. Thomasson: >> >>> Can you move waitsets over from mutex to futex and vise versa? >> >> glibc doesn't do this either. > > Wait morphing is not in the realm of the compiler. It's in the kernel. OOPS! I thought you were talking about gcc. Sorry Bonita!
[toc] | [prev] | [next] | [standalone]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2023-11-09 06:45 +0100 |
| Message-ID | <uihrm2$22ioe$1@raubtier-asyl.eternal-september.org> |
| In reply to | #117718 |
Am 09.11.2023 um 06:44 schrieb Chris M. Thomasson: > Wait morphing is not in the realm of the compiler. It's in the kernel. Read this: https://stackoverflow.com/questions/45163701/which-os-platforms-implement-wait-morphing-optimization
[toc] | [prev] | [next] | [standalone]
Page 1 of 13 [1] 2 3 … 13 Next page →
Back to top | Article view | comp.lang.c++
csiph-web