{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,6,8]],"date-time":"2024-06-08T22:34:03Z","timestamp":1717886043289},"reference-count":14,"publisher":"Cambridge University Press (CUP)","issue":"4-5","license":[{"start":{"date-parts":[[2012,9,5]],"date-time":"2012-09-05T00:00:00Z","timestamp":1346803200000},"content-version":"unspecified","delay-in-days":66,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2012,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Multi-threading is currently supported by several well-known Prolog systems providing a highly portable solution for applications that can benefit from concurrency. When multi-threading is combined with tabling, we can exploit the power of higher procedural control and declarative semantics. However, despite the availability of both threads and tabling in some Prolog systems, the implementation of these two features implies complex ties to each other and to the underlying engine. Until now, XSB was the only Prolog system combining multi-threading with tabling. In XSB, tables may be either private or shared between threads. While thread-private tables are easier to implement, shared tables have all the associated issues of locking, synchronization and potential deadlocks. In this paper, we propose an alternative view to XSB's approach. In our proposal, each thread views its tables as private but, at the engine level, we use a <jats:italic>common table space<\/jats:italic> where tables are shared among all threads. We present three designs for our common table space approach: <jats:italic>No-Sharing (NS)<\/jats:italic> (similar to XSB's private tables), <jats:italic>Subgoal-Sharing (SS)<\/jats:italic> and <jats:italic>Full-Sharing (FS)<\/jats:italic>. The primary goal of this work was to reduce the memory usage for the table space but, our experimental results, using the YapTab tabling system with a local evaluation strategy, show that we can also achieve significant reductions on running time.<\/jats:p>","DOI":"10.1017\/s1471068412000117","type":"journal-article","created":{"date-parts":[[2012,9,5]],"date-time":"2012-09-05T11:28:45Z","timestamp":1346844525000},"page":"427-443","source":"Crossref","is-referenced-by-count":9,"title":["Towards multi-threaded local tabling using a common table space"],"prefix":"10.1017","volume":"12","author":[{"given":"MIGUEL","family":"AREIAS","sequence":"first","affiliation":[]},{"given":"RICARDO","family":"ROCHA","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2012,9,5]]},"reference":[{"key":"S1471068412000117_ref1","doi-asserted-by":"publisher","DOI":"10.1145\/227595.227597"},{"key":"S1471068412000117_ref10","first-page":"662","volume-title":"International Euro-Par Conference","author":"Rocha","year":"2004"},{"key":"S1471068412000117_ref2","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0026817"},{"key":"S1471068412000117_ref6","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-89982-2_24"},{"key":"S1471068412000117_ref5","unstructured":"Marques R. 2007. Concurrent Tabling: Algorithms and Implementation, PhD Thesis, Department of Computer Science, New University of Lisbon."},{"key":"S1471068412000117_ref3","doi-asserted-by":"crossref","first-page":"243","DOI":"10.1007\/3-540-61756-6_89","volume-title":"International Symposium on Programming Language Implementation and Logic Programming","author":"Freire","year":"1996"},{"key":"S1471068412000117_ref11","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068404002030"},{"key":"S1471068412000117_ref8","unstructured":"Moura P. 2008. ISO\/IEC DTR 13211\u20135:2007 Prolog Multi-threading Predicates. Available from http:\/\/logtalk.org\/plstd\/threads.pdf."},{"key":"S1471068412000117_ref12","doi-asserted-by":"publisher","DOI":"10.1145\/291889.291897"},{"key":"S1471068412000117_ref14","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-24599-5_23"},{"key":"S1471068412000117_ref13","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068411000500"},{"key":"S1471068412000117_ref7","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-11503-5_22"},{"key":"S1471068412000117_ref9","doi-asserted-by":"publisher","DOI":"10.1016\/S0743-1066(98)10013-4"},{"key":"S1471068412000117_ref4","first-page":"601","volume-title":"Internacional World Wide Web Conference","author":"Liang","year":"2009"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068412000117","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,4,25]],"date-time":"2019-04-25T20:25:10Z","timestamp":1556223910000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068412000117\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,7]]},"references-count":14,"journal-issue":{"issue":"4-5","published-print":{"date-parts":[[2012,7]]}},"alternative-id":["S1471068412000117"],"URL":"https:\/\/doi.org\/10.1017\/s1471068412000117","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,7]]}}}