SICStus MT—A multithreaded execution environment for SICStus Prolog

  • Jesper Eskilson
  • Mats Carlsson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1490)


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.


logic programming implementation multithreading abstract machines 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Joe Armstrong, Robert Virding, Claes Wiström, and Mike Williams. Concurrent Programming In Erlang. Prentice Hall, second edition, 1996.Google Scholar
  2. 2.
    Hassan AÏt-Kaci. Warren's Abstract Machine—A Tutorial Reconstruction. MIT Press, 1991.Google Scholar
  3. 3.
    Kent Boortz. SICStus maskinkodskompilering. SICS Technical Report T91:13, Swedish Institute of Computer Science, August 1991.Google Scholar
  4. 4.
    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.Google Scholar
  5. 5.
    Koen De Bosschere. Process-based parallel logic programming: A survey of the basic issues. In Bosschere et al. [6].Google Scholar
  6. 6.
    Koen De Bosschere, Jean-Marie Jacquet, and Antonio Brogi, editors. ICLP94 Post-Conference Workshop on Process-Based Parallel Logic Programming, June 1994.Google Scholar
  7. 7.
    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.Google Scholar
  8. 8.
    Takashi Chikayama, Tetsuro Fujise, and Hiroshi Yashiro. A portable and reasonably efficient implementation of KL1. In Warren [35], page 833.Google Scholar
  9. 9.
    Randy Chow and Theodore Johnson. Distributed Operating Systems & Algorithms. Addison-Wesley, March 1997.Google Scholar
  10. 10.
    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.Google Scholar
  11. 11.
    J. Conery. The AND/OR Process Model for Parallel Interpretation of Logic Programs. PhD thesis, University of California at Irvine, 1983.Google Scholar
  12. 12.
    George Coulouris, Jean Dollimore, and Tim Kindberg. Distributed Systems—Concepts And Design. Addison-Wesley, second edition, 1994.Google Scholar
  13. 13.
    J. A. Feldman. High Level Programming for Distributed Computing. Communications of the ACM, 22(6):353–368, 1979.MATHCrossRefGoogle Scholar
  14. 14.
    David Flanagan. Java in a Nutshell. O'Reilly & Associates, second edition, 1997.Google Scholar
  15. 15.
    Iván Futó. Prolog with communicating processes: From T-Prolog to CSR-Prolog. In Warren [35], pages 3–17.Google Scholar
  16. 16.
    D. Gelernter. Generative communication in linda. ACM Transactions on Programming Languages and Systems, 7(1):80–112, January 1989.CrossRefGoogle Scholar
  17. 17.
    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.Google Scholar
  18. 18.
    Samuel P. Harbison and Guy L. Steele Jr. C, A Reference Manual. Prentice Hall, third edition, 1991.Google Scholar
  19. 19.
    R. C. Haygood. Native code compilation in SICStus Prolog. In Proceedings of the Eleventh International Conference of Logic Programming. The MIT Press, 1994.Google Scholar
  20. 20.
    John Horton. Computer Recreations. Scientific American, March 1984.Google Scholar
  21. 21.
    B. W. Lampson. A scheduling philosophy for multiprocessing systems. Communications of the ACM, 11(5):347–360, May 1968.MATHCrossRefGoogle Scholar
  22. 22.
    Bill Lewis and Daniel J. Berg. Threads Primer—A Guide To Multithreaded Programming. Prentice Hall, 1996.Google Scholar
  23. 23.
    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.CrossRefGoogle Scholar
  24. 24.
    ML Consulting and Computing Ltd, Applied Logic Laboratory, Budapest, Hungary. CS-Prolog Professional User's Manual, Version 1.1, 1997.Google Scholar
  25. 25.
    Bradford Nichols, Dick Buttlar, and Jacqueline Proulx Farrell. Pthreads Programming. O'Reilly & Associates, 1996.Google Scholar
  26. 26.
    R. Ramesh, I.V. Ramakrishnan, and D.S. Warren. Automata-Driven Indexing of Prolog Clauses. In Proceedings of the Principles of Programming Languages, 1990.Google Scholar
  27. 27.
    John H. Reppy. Asynchronous Signals in Standard ML. Technical Report 90-1144, Department of Computer Science, Cornell University, Ithaca, NY 14853, 1990.Google Scholar
  28. 28.
    D. G. Schwartz. Cooperating Heterogenous Systems: A Blackboard-based Meta Approach. PhD thesis, Department of Computer Engineering and Science, Case Western Reserve University, 1993.Google Scholar
  29. 29.
    Abraham Silberschatz and Peter B. Galvin. Operating Systems Concepts. Addison-Wesley, fourth edition, 1994.Google Scholar
  30. 30.
    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.Google Scholar
  31. 31.
    Gert Smolka. Problem solving with constraints and programming. ACM Computing Surveys, 28(4es), December 1996. Electronic Section.Google Scholar
  32. 32.
    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: Scholar
  33. 33.
    Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall, 1992.Google Scholar
  34. 34.
    Hamish Taylor. Design of a resolution multiprocessor for the parallel virtual machine. In Bosschere et al. [6].Google Scholar
  35. 35.
    David S. Warren, editor. Proceedings of the Tenth International Conference on Logic Programming, Budapest, Hungary, 1993. The MIT Press.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Jesper Eskilson
    • 1
  • Mats Carlsson
    • 1
  1. 1.Intelligent Systems LaboratorySwedish Institute of Computer ScienceKistaSweden

Personalised recommendations