Abstract
The development of intelligent software agents and other complex applications which continuously interact with their environments has been one of the reasons why explicit concurrency has become a necessity in a modern Prolog system today. Such applications need to perform several tasks which may be very different with respect to how they are implemented in Prolog. Performing these tasks simultaneously is very tedious without language support.
This paper describes the design, implementation and evaluation of a prototype multithreaded execution environment for SICStus Prolog. The threads are dynamically managed using a small and compact set of Prolog primitives implemented in a portable way, requiring almost no support from the underlying operating system.
Preview
Unable to display preview. Download preview PDF.
References
Joe Armstrong, Robert Virding, Claes Wiström, and Mike Williams. Concurrent Programming In Erlang. Prentice Hall, second edition, 1996.
Hassan AÏt-Kaci. Warren's Abstract Machine—A Tutorial Reconstruction. MIT Press, 1991.
Kent Boortz. SICStus maskinkodskompilering. SICS Technical Report T91:13, Swedish Institute of Computer Science, August 1991.
K. De Bosschere and J.-M. Jacquet. Multi-Prolog: Definition, Operational Semantics and Implementation. In D. S. Warren, editor, Proceedings of the ICLP'93 conference, pages 299–313, Budapest, Hungary, June 1993. The MIT Press.
Koen De Bosschere. Process-based parallel logic programming: A survey of the basic issues. In Bosschere et al. [6].
Koen De Bosschere, Jean-Marie Jacquet, and Antonio Brogi, editors. ICLP94 Post-Conference Workshop on Process-Based Parallel Logic Programming, June 1994.
Mats Carlsson, Johan Widén, Johan Andersson, Stefan Andersson, Kent Boortz, Hans Nilsson, and Thomas Sjöland. SICStus Prolog User's Manual. SICS Technical Report T91:15, Swedish Institute of Computer Science, June 1995. Release 3 #0.
Takashi Chikayama, Tetsuro Fujise, and Hiroshi Yashiro. A portable and reasonably efficient implementation of KL1. In Warren [35], page 833.
Randy Chow and Theodore Johnson. Distributed Operating Systems & Algorithms. Addison-Wesley, March 1997.
Damian Chu. I.C. Prolog II: a Multi-threaded Prolog System. In Evan Tick and Giancarlo Succi, editors, ICLP-Workshops on Implementations of Logic Programming Systems, pages 17–34. Kluwer Academic Publishers, 1993.
J. Conery. The AND/OR Process Model for Parallel Interpretation of Logic Programs. PhD thesis, University of California at Irvine, 1983.
George Coulouris, Jean Dollimore, and Tim Kindberg. Distributed Systems—Concepts And Design. Addison-Wesley, second edition, 1994.
J. A. Feldman. High Level Programming for Distributed Computing. Communications of the ACM, 22(6):353–368, 1979.
David Flanagan. Java in a Nutshell. O'Reilly & Associates, second edition, 1997.
Iván Futó. Prolog with communicating processes: From T-Prolog to CSR-Prolog. In Warren [35], pages 3–17.
D. Gelernter. Generative communication in linda. ACM Transactions on Programming Languages and Systems, 7(1):80–112, January 1989.
D. I. Good, R. M. Cohen, and J. Keeton-Williams. Principles of Proving Concurrent Programs in Gypsy. In Proceedings of the Sixth ACM Symposium on Principles of Programming Languages, pages 42–52, 1979.
Samuel P. Harbison and Guy L. Steele Jr. C, A Reference Manual. Prentice Hall, third edition, 1991.
R. C. Haygood. Native code compilation in SICStus Prolog. In Proceedings of the Eleventh International Conference of Logic Programming. The MIT Press, 1994.
John Horton. Computer Recreations. Scientific American, March 1984.
B. W. Lampson. A scheduling philosophy for multiprocessing systems. Communications of the ACM, 11(5):347–360, May 1968.
Bill Lewis and Daniel J. Berg. Threads Primer—A Guide To Multithreaded Programming. Prentice Hall, 1996.
Ewing Lusk, Ralph Butler, Terrence Disz, Robert Olson, Ross Overbeek, Rick Stevens, David H. D. Warren, Alan Calderwood, Péter Szeredi, Seif Haridi, Per Brand, Mats Carlsson, Andrzej Ciepielewski, and Bogumil Hausman. The Aurora or-parallel Prolog system. New Generation Computing, 7(2,3):243–271, 1990.
ML Consulting and Computing Ltd, Applied Logic Laboratory, Budapest, Hungary. CS-Prolog Professional User's Manual, Version 1.1, 1997.
Bradford Nichols, Dick Buttlar, and Jacqueline Proulx Farrell. Pthreads Programming. O'Reilly & Associates, 1996.
R. Ramesh, I.V. Ramakrishnan, and D.S. Warren. Automata-Driven Indexing of Prolog Clauses. In Proceedings of the Principles of Programming Languages, 1990.
John H. Reppy. Asynchronous Signals in Standard ML. Technical Report 90-1144, Department of Computer Science, Cornell University, Ithaca, NY 14853, 1990.
D. G. Schwartz. Cooperating Heterogenous Systems: A Blackboard-based Meta Approach. PhD thesis, Department of Computer Engineering and Science, Case Western Reserve University, 1993.
Abraham Silberschatz and Peter B. Galvin. Operating Systems Concepts. Addison-Wesley, fourth edition, 1994.
Gert Smolka. The Oz programming model. In Jan van Leeuwen, editor, Computer Science Today, Lecture Notes in Computer Science, vol. 1000, pages 324–343. Springer-Verlag, Berlin, 1995.
Gert Smolka. Problem solving with constraints and programming. ACM Computing Surveys, 28(4es), December 1996. Electronic Section.
Péter Szeredi, Katalin Molnár, and Rob Scott. Serving multiple HTML clients from a Prolog application. In Paul Tarau, Andrew Davison, Koen de Bosschere, and Manuel Hermenegildo, editors, Proceedings of the 1st Workshop on Logic Programming Tools for INTERNET Applications, in conjunction with JICSLP'96, Bonn, Germany, pages 81–90. COMPULOG-NET, September 1996. Available from: http://clement.info.umoncton.ca/~lpnet/lp-internet/archive.html.
Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall, 1992.
Hamish Taylor. Design of a resolution multiprocessor for the parallel virtual machine. In Bosschere et al. [6].
David S. Warren, editor. Proceedings of the Tenth International Conference on Logic Programming, Budapest, Hungary, 1993. The MIT Press.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Eskilson, J., Carlsson, M. (1998). SICStus MT—A multithreaded execution environment for SICStus Prolog. In: Palamidessi, C., Glaser, H., Meinke, K. (eds) Principles of Declarative Programming. ALP PLILP 1998 1998. Lecture Notes in Computer Science, vol 1490. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0056606
Download citation
DOI: https://doi.org/10.1007/BFb0056606
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-65012-6
Online ISBN: 978-3-540-49766-0
eBook Packages: Springer Book Archive