Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #117659 > unrolled thread

A Java- / .NET-like monitor

Started byBonita Montero <Bonita.Montero@gmail.com>
First post2023-11-08 15:56 +0100
Last post2023-11-13 22:46 -0800
Articles 20 on this page of 259 — 9 participants

Back to article view | Back to comp.lang.c++


Contents

  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 →


#117659 — A Java- / .NET-like monitor

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-11-08 15:56 +0100
SubjectA 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]


#117660

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117663

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117669

FromKaz Kylheku <864-117-4973@kylheku.com>
Date2023-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]


#117673

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117676

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117679

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117683

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117692

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117694

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117695

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117696

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117710

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117712

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117714

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117715

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117717

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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]


#117718

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117719

From"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Date2023-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]


#117720

FromBonita Montero <Bonita.Montero@gmail.com>
Date2023-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