Aaron Moss, Robert Schluntz and Peter A. Buhr,
"C∀ : Adding Modern Programming Language Features to C",
Software-Practice and Experience,
48(12), December 2018.
Peter A. Buhr, David Dice and Wim H. Hesselink,
"High-Contention Mutual Exclusion by Elevator Algorithms",
Concurrency and Computation: Practice and Experience,
30(18), September 2018.
Wim H. Hesselink and Peter A. Buhr and David Dice,
"Fast Mutual Exclusion by the Triangle Algorithm",
Concurrency and Computation: Practice and Experience,
30(4), February 2018.
Peter A. Buhr, David Dice and Wim H. Hesselink,
"Dekker's Mutual Exclusion Algorithm Made RW-Safe",
Concurrency and Computation: Practice and Experience,
28(1):144-165, January 2016.
Peter A. Buhr, David Dice and Wim H. Hesselink,
"High-Performance N-Thread Software Solutions for Mutual Exclusion",
Concurrency and Computation: Practice and Experience,
27(3):651-701, March 2015
Ashif S. Harji, Peter A. Buhr and Tim Brecht,
"Our Troubles with Linux Kernel Upgrades and Why You Should Care",
ACM SIGOPS Operating Systems Review,
47(2):66-72, 2013
Peter A. Buhr and Ashif S. Harji,
"Implicit-signal monitors",
ACM Transactions on Programming Languages and Systems,
27(6):1270-1343, 2005.
Peter A. Buhr and Ashif S. Harji,
"Concurrent Urban Legends",
Concurrency and Computation: Practice and Experience,
17(9):1133-1172, August 2005.
Peter A. Buhr and W. Y. Russell Mok,
"Advanced Exception Handling Mechanisms",
IEEE Transactions on Software Engineering,
26(9):820-836, September 2000.
Peter A. Buhr, Hamish I. Macdonald, and C. Robert Zarnke,
"Synchronous and Asynchronous Handling of Abnormal Events in the μSystem",
Software-Practice and Experience,
22(9):735-776, September 1992.
Peter A. Buhr and Richard A. Stroobosscher,
"The μSystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running UNIX",
Software-Practice and Experience,
20(9):929-963, September 1990.
P. A. Buhr and R. C. Holte,
"Some Considerations in the Design of Communication Aids for the Severely Physically Disabled",
Medical & Biological Engineering & Computing,
no. 19, pages 725-733, November 1981.
H. C. Williams and P. A. Buhr,
"Calculations of the Regulator of Q(√D) by Use of the Nearest Integer Continued Fraction Algorithm",
Mathematics of Computation,
33(145):369-381, January 1979.
Refereed Conference and Workshop Publications
Ashif S. Harji, Peter A. Buhr and Tim Brecht,
"Comparing High-Performance Multi-core Web-Server Architectures".
In Proceedings of the 5th Annual International Systems and Storage Conference (SYSTOR 2012)
pages 2:1-2:12, June 2012, Haifa, Israel
Roy Krischer and Peter A. Buhr,
"Usability Challenges in Exception Handling".
In Proceedings of the 5th International Workshop on Exception Handling,
pages 7-13, June 2012, Zurich, Switzerland
Ashif S. Harji, Peter A. Buhr and Tim Brecht,
"Our Troubles with Linux and Why You Should Care".
In Proceedings of the 2nd ACM SIGOPS Asia-Pacific Workshop on Systems (APSys 2011)
July 2011, Shanghai, China
Roy Krischer and Peter A. Buhr,
"Asynchronous Exception Propagation in Blocked Tasks".
In Proceedings of the 4th International Workshop on Exception Handling,
16th International Symposium on the Foundations of Software Engineering (FSE 16),
pages 8-15, March 2008, Atlanta, U.S.A.
David Pariag, Tim Brecht, Ashif Harji, Peter Buhr, and Amol Shukla.
"Comparing the Performance of Web Server Architectures".
In Proceedings of the 2007 Eurosys conference
pages 231-243, March 2007, Lisbon, Portugal
Jiongxiong Chen, Ashif Harji, and Peter Buhr,
"Solution Space for Fixed-Priority with Preemption Threshold",
In Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05),
pages 385-394, San Francisco, CA, U.S.A, March 2005. IEEE.
Peter A. Buhr and Roy Krischer,
"Bound Exceptions in Object Programming",
In Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems: Towards Emerging Application Areas and New Programming Paradigms,
pages 20-26, Darmstadt, Germany, July 2003. ECOOP.
Peter A. Buhr, Ashif S. Harji, Philipp E. Lim, and Jiongxiong Chen,
"Object-Oriented Real-Time Concurrency",
SIGPLAN Notices,
35(10):29-46, October 2000,
Proceedings of the Conference on Object-Oriented Programming Systems,
Languages, and Applications (OOPSLA), Oct. 15-19, 2000, Minneapolis,
Minnesota, U.S.A.
Peter A. Buhr and Robert Denda,
"μProfiler: Profiling User-Level Threads in a Shared-Memory Programming Environment",
In Dennis Caromel, Rodney R. Oldehoeft, and Marydell Tholburn, editors,
Proceedings of the Second International Symposium (ISCOPE'98) on Computing in Object-Oriented Parallel Environments,
volume 1505, pages 159-166, Santa Fe, New Mexico, U.S.A., December 1998. Springer-Verlag. Lecture Notes in Computer Science.
Peter A. Buhr, Martin Karsten and Jun Shih,
"A Multi-threaded Debugger for Multi-threaded Applications",
In Proceedings of SPDT'96: SIGMETRICS Symposium on Parallel and Distributed Tools,
pages 80-87, Philadelphia, Pennsylvania, U.S.A., May 1996. ACM Press.
Peter A. Buhr, Anil K. Goel, Naomi Nishimura, and Prabhakar Ragde,
"Parallel Pointer-Based Join Algorithms in Memory-Mapped Environments",
In Proceedings of the 12th IEEE International Conference on Data Engineering,
pages 266-275, New Orleans, USA, February 1996. IEEE Computer Society Press.
Peter A. Buhr, Michael H. Coffin, Rory A. Jacobs, Johan Larson, and R. Scotte Zinn,
"Concurrent Monitoring, Visualization and Debugging",
In Proceedings of ACM/ONR Workshop on Parallel and Distributed Debugging,
pages 178-180, San Diego, California, May 1993. [Extended abstract].
Peter A. Buhr, Anil K. Goel, and Anderson Wai,
"μDatabase : A Toolkit for Constructing Memory Mapped Databases",
In Antonio Albano and Ron Morrison, editors, Persistent Object Systems,
pages 166-185, San Miniato, Italy, September 1992,
Springer-Verlag. Workshops in Computing, Ed. by Professor C. J. van Rijsbergen, QA76.9.D3I59.
Peter A. Buhr and Glen Ditchfield,
"Adding Concurrency to a Programming Language",
In USENIX C++ Technical Conference Proceedings,
pages 207-224, Portland, Oregon, U.S.A., August 1992. USENIX Association.
P. A. Buhr, Glen Ditchfield, and C. R. Zarnke,
"Basic Abstractions for a Database Programming Language",
In Richard Hull, Ron Morrison, and David Stemple, editors,
Database Programming Languages, 2nd International Workshop,
pages 422-437. Morgan Kaufmann, June 1989.
P. A. Buhr, Glen Ditchfield, and C. R. Zarnke,
"Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language",
SIGPLAN Notices, 24(4):18-21, April 1989,
Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26-27, 1988, San Diego, California, U.S.A.
P. A. Buhr and C. R. Zarnke,
"Addressing in a Persistent Environment",
In John Rosenburg and David Koch, editors, Persistent Object Systems,
pages 200-217, University of Newcastle, New South Wales, Australia, January 1989,
Springer-Verlag. Workshops in Computing, Ed. by Professor C. J. van Rijsbergen, QA76.64.I57,
P. A. Buhr and C. R. Zarnke,
"Nesting in an Object Oriented Language is NOT for the Birds",
In S. Gjessing and K. Nygaard, editors,
Proceedings of the European Conference on Object Oriented Programming,
volume 322, pages 128-145, Oslo, Norway, August 1988. ECOOP'88, Springer-Verlag,
Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis.
P. A. Buhr and C. R. Zarnke,
"Persistence in an Environment for a Statically-Typed Programming Language",
In Workshop on Persistent Object Systems: their design, implementation and use,
volume PPRR 42, pages 317-336, Appin, Scotland, August 1987,
Universities of Glasgow and St. Andrews, Scotland.
P. A. Buhr and C. R. Zarnke,
"A Design for Integration of Files into a Strongly Typed Programming Language",
In Proceedings IEEE Computer Society 1986 International Conference on Computer Languages,
pages 190-200, Miami, Florida, U.S.A, October 1986.
R. C. Holte, P. A. Buhr, A. O. Quanbury and F. J. Burkowski,
"A Microcomputer Communication Aid",
Proceedings of the 7th Canadian Medical and Biological Engineering Conference,
pages 119-120, August 1978.
Books
Peter A. Buhr. Understanding Control Flow: Concurrent Programming using μC++, Springer,
Switzerland, 2016, 741 pages
Book Chapters
Peter A. Buhr and Roy Krischer. Bound Exceptions in Object-Oriented Programming. In C. Dony,
J. L. Knudsen, A. Romanovsky, and A. Tripathi, editors, Advanced Topics in Exception Handling
Techniques, volume 4119 of Lecture Notes in Computer Science, pages 1-21. Springer-Verlag,
2006.
Peter A. Buhr, Ashif Harji, and W. Y. Russell Mok,
"Exception Handling",
In Marvin V. Zelkowitz, editor, Advances in COMPUTERS,
volume 56, pages 245-303. Academic Press, 2002.
Peter A. Buhr, Michel Fortier, and Michael H. Coffin,
Encyclopedia of Computer Science and Technology,
volume 40, supplement 25, chapter "Monitor Taxonomy", pages 191-212. Marcel Dekker, Inc, 1999,
This chapter is an abridged version of "Monitor Classification".
Non-Refereed Publications
Peter A. Buhr and Richard C. Bilson,
"Examining μC++ : High-level Object-Oriented Concurrency in C++",
Dr. Dobb's Journal : Software Tools for the Professional Programmer,
31(2):36-40, February 2006.
Peter~A. Buhr,
"μC++ Annotated Reference Manual, Version 5.3.0",
Technical report, School of Computer Science, University of Waterloo,
Waterloo, Ontario, Canada, N2L 3G1, January 2006.
Peter A. Buhr, Martin Karsten, Jun Shih, and Oliver Schuster,
"KDB Reference Manual, Version 1.1",
Technical report, Department of Computer Science, University of
Waterloo, Waterloo, Ontario, Canada, N2L 3G1, July 2000.
Peter A. Buhr and Anil K. Goel,
"μDatabase Annotated Reference Manual, Version 1.0",
Technical report, Department of Computer Science, University of
Waterloo, Waterloo, Ontario, Canada, N2L 3G1, September 1998.
David Taylor and Peter A. Buhr,
"POET with μC++ Reference Manual",
Technical report, Department of Computer Science, University of
Waterloo, Waterloo, Ontario, Canada, N2L 3G1, September 1997.
Peter A. Buhr, Hamish I. Macdonald, and Richard A. Stroobosscher,
"μSystem Annotated Reference Manual, Version 4.4.3",
Technical report, Department of Computer Science, University of
Waterloo, Waterloo, Ontario, Canada, N2L 3G1, September 1994.
ACM Forum,
Communications of the ACM,
26(7):463-464, July 1983.
Published Software
IBM TSO command for selectively listing members names of a partitioned dataset. (1978)
Distributed on Share Tape.
Microcomputer-Communication Aid for a severely physically handicapped person. (1980)
Used successfully at the Shriner's Hospital for Sick Children, Winnipeg, Manitoba.
μSystem is a software concurrency platform to facilitate concurrency research in the C program-
ming language. (1988-1994) I was the principal designer and implementor on this project. In
detail, the μSystem is a library of C routines and definitions that provide light-weight concurrency
on uniprocessor and multiprocessor computers running the UNIX operating system. The μSystem
is no longer supported, but it was used from research and teaching world-wide.
μC++ is a software concurrency platform to facilitate concurrency research in the C++ programming
language. (1990-present) I was the principal designer and participated in the implementation on
this project. In detail, μC++ extends the C++ programming language in somewhat the same way that
C++ extends the C programming language. The extensions introduce new objects that augment the
existing control flow facilities and provide for concurrency. μC++ provides both direct and indirect
communication using the traditional routine call mechanism. All aspects of μC++ are statically
type-checked. Furthermore, μC++ provides mechanisms for precisely controlling the order in
which requests are serviced and for postponing work on already-accepted requests. μC++ clarifies
and extends object-oriented concurrency and provides more facilities than other systems. Over
5,000 students have used μC++ in the undergraduates concurrency-course (CS343) at Waterloo
over 30 years.
μDatabase Software Product is a software toolkit for developing highly concurrent database ac-
cess methods based on the "exact positioning" and memory-mapping of a single-level store. I was
the principal designer and participated in the implementation on this project. In detail, μDatabase
provides three levels of facilities to construct memory-mapped access methods. Storage manage-
ment tools, based on the "exact positioning" of data approach pioneered by this research, allow
data structures containing pointers to be stored and subsequently retrieved and accessed without
relocating or swizzling of the pointers. Concurrency tools are available for front-end and back-
end concurrency, i.e., servicing simultaneous queries and performing parallel I/O. Recovery tools
are being developed. μDatabase is used locally at Waterloo but has not been distributed publicly.
MVD Software Product is a collection of software tools to monitor, visualize and debug concur-
rent programs. I was the principal designer and participated in the implementation on this project.
In detail, the MVD toolkit provides four levels of facilities for understanding concurrent (and se-
quential) execution: an asynchronous, statistical monitoring facility providing visualization and
animation of the captured data; a synchronous, event tracing facility providing a connected to a
sophisticated partially-ordered event tracer (developed by another group); a multithreaded debug-
ger for debugging multithreaded μC++ applications; a replay mechanism used with the debugger
for recreating the execution of a concurrent program, given the same inputs. The MVD toolkit is
distributed with μC++.
C∀ (C-for-all) is an open-source project extending ISO C with modern safety and productivity fea-
tures, while still ensuring backwards compatibility with C and its programmers. (2015-present)
C∀ is designed to have an orthogonal feature-set based closely on the C programming paradigm
(non-object-oriented) and these features can be added incrementally to an existing C code-base
allowing programmers to learn C∀ on an as-needed basis. In many ways, C∀ is to C as Scala
is to Java, providing a research vehicle for new typing and control-flow capabilities on top of
a highly popular programming language allowing immediate dissemination. Without continued
development, C will be unable to cope with the needs of modern programming problems and pro-
grammers. Considering the large body of existing C code and programmers, there is a significant
impetus to ensure C is transformed into a modern programming language. C∀ is used locally at
Waterloo and will be distributed publicly soon.
μKnot Web-Server is a thread-per-connection web-server written in μC++ with the following fea-
tures: auto spawn, cache segregation, CPU affinity, process and NIC pinning. (2010-preesent)