Skip to main content

SICStus MT—A multithreaded execution environment for SICStus Prolog

  • Conference paper
  • First Online:
Principles of Declarative Programming (ALP 1998, PLILP 1998)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Joe Armstrong, Robert Virding, Claes Wiström, and Mike Williams. Concurrent Programming In Erlang. Prentice Hall, second edition, 1996.

    Google Scholar 

  2. Hassan AÏt-Kaci. Warren's Abstract Machine—A Tutorial Reconstruction. MIT Press, 1991.

    Google Scholar 

  3. Kent Boortz. SICStus maskinkodskompilering. SICS Technical Report T91:13, Swedish Institute of Computer Science, August 1991.

    Google Scholar 

  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. Koen De Bosschere. Process-based parallel logic programming: A survey of the basic issues. In Bosschere et al. [6].

    Google Scholar 

  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. 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. Takashi Chikayama, Tetsuro Fujise, and Hiroshi Yashiro. A portable and reasonably efficient implementation of KL1. In Warren [35], page 833.

    Google Scholar 

  9. Randy Chow and Theodore Johnson. Distributed Operating Systems & Algorithms. Addison-Wesley, March 1997.

    Google Scholar 

  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. J. Conery. The AND/OR Process Model for Parallel Interpretation of Logic Programs. PhD thesis, University of California at Irvine, 1983.

    Google Scholar 

  12. George Coulouris, Jean Dollimore, and Tim Kindberg. Distributed Systems—Concepts And Design. Addison-Wesley, second edition, 1994.

    Google Scholar 

  13. J. A. Feldman. High Level Programming for Distributed Computing. Communications of the ACM, 22(6):353–368, 1979.

    Article  MATH  Google Scholar 

  14. David Flanagan. Java in a Nutshell. O'Reilly & Associates, second edition, 1997.

    Google Scholar 

  15. Iván Futó. Prolog with communicating processes: From T-Prolog to CSR-Prolog. In Warren [35], pages 3–17.

    Google Scholar 

  16. D. Gelernter. Generative communication in linda. ACM Transactions on Programming Languages and Systems, 7(1):80–112, January 1989.

    Article  Google Scholar 

  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. Samuel P. Harbison and Guy L. Steele Jr. C, A Reference Manual. Prentice Hall, third edition, 1991.

    Google Scholar 

  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. John Horton. Computer Recreations. Scientific American, March 1984.

    Google Scholar 

  21. B. W. Lampson. A scheduling philosophy for multiprocessing systems. Communications of the ACM, 11(5):347–360, May 1968.

    Article  MATH  Google Scholar 

  22. Bill Lewis and Daniel J. Berg. Threads Primer—A Guide To Multithreaded Programming. Prentice Hall, 1996.

    Google Scholar 

  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.

    Article  Google Scholar 

  24. ML Consulting and Computing Ltd, Applied Logic Laboratory, Budapest, Hungary. CS-Prolog Professional User's Manual, Version 1.1, 1997.

    Google Scholar 

  25. Bradford Nichols, Dick Buttlar, and Jacqueline Proulx Farrell. Pthreads Programming. O'Reilly & Associates, 1996.

    Google Scholar 

  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. 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. 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. Abraham Silberschatz and Peter B. Galvin. Operating Systems Concepts. Addison-Wesley, fourth edition, 1994.

    Google Scholar 

  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. Gert Smolka. Problem solving with constraints and programming. ACM Computing Surveys, 28(4es), December 1996. Electronic Section.

    Google Scholar 

  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: http://clement.info.umoncton.ca/~lpnet/lp-internet/archive.html.

    Google Scholar 

  33. Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall, 1992.

    Google Scholar 

  34. Hamish Taylor. Design of a resolution multiprocessor for the parallel virtual machine. In Bosschere et al. [6].

    Google Scholar 

  35. David S. Warren, editor. Proceedings of the Tenth International Conference on Logic Programming, Budapest, Hungary, 1993. The MIT Press.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Catuscia Palamidessi Hugh Glaser Karl Meinke

Rights and permissions

Reprints 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

Publish with us

Policies and ethics