{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,15]],"date-time":"2026-01-15T02:53:15Z","timestamp":1768445595313,"version":"3.49.0"},"publisher-location":"Cham","reference-count":31,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030293994","type":"print"},{"value":"9783030294007","type":"electronic"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-29400-7_23","type":"book-chapter","created":{"date-parts":[[2019,8,18]],"date-time":"2019-08-18T23:02:41Z","timestamp":1566169361000},"page":"317-333","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":5,"title":["Scalable FIFO Channels for Programming via Communicating Sequential Processes"],"prefix":"10.1007","author":[{"given":"Nikita","family":"Koval","sequence":"first","affiliation":[]},{"given":"Dan","family":"Alistarh","sequence":"additional","affiliation":[]},{"given":"Roman","family":"Elizarov","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,8,13]]},"reference":[{"key":"23_CR1","unstructured":"Go Concurrency Patterns: Pipelines and cancellation - The Go Blog (2014). https:\/\/blog.golang.org\/pipelines"},{"key":"23_CR2","unstructured":"Akka (2018). https:\/\/akka.io\/"},{"key":"23_CR3","unstructured":"Erlang Programming Language (2018). http:\/\/www.erlang.org\/"},{"key":"23_CR4","unstructured":"Kotlin Coroutines (2018). https:\/\/github.com\/Kotlin\/kotlin-coroutines"},{"key":"23_CR5","unstructured":"Livelock bug in the Kotling Coroutine Implementation (2018). https:\/\/github.com\/Kotlin\/kotlinx.coroutines\/issues\/504"},{"key":"23_CR6","unstructured":"OpenJDK: Loom (2018). http:\/\/openjdk.java.net\/projects\/loom\/"},{"key":"23_CR7","unstructured":"The Clojure Programming Language (2018). https:\/\/clojure.org\/"},{"key":"23_CR8","unstructured":"The Go Programming Language (2018). https:\/\/golang.org\/"},{"key":"23_CR9","unstructured":"The Rust Programming Language (2018). https:\/\/www.rust-lang.org\/"},{"key":"23_CR10","series-title":"Symposium on the Occasion of 25 Years of CSP, London, UK, 7\u20138 July 2004. Revised Invited Papers","doi-asserted-by":"publisher","DOI":"10.1007\/b136154","volume-title":"Communicating Sequential Processes. The First 25 Years","author":"AE Abdallah","year":"2005","unstructured":"Abdallah, A.E.: Communicating Sequential Processes. The First 25 Years. Symposium on the Occasion of 25 Years of CSP, London, UK, 7\u20138 July 2004. Revised Invited Papers, vol. 3525. Springer, Heidelberg (2005). https:\/\/doi.org\/10.1007\/b136154"},{"key":"23_CR11","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"151","DOI":"10.1007\/978-3-642-15291-7_16","volume-title":"Euro-Par 2010 - Parallel Processing","author":"Y Afek","year":"2010","unstructured":"Afek, Y., Korland, G., Natanzon, M., Shavit, N.: Scalable producer-consumer pools based on elimination-diffraction trees. In: D\u2019Ambra, P., Guarracino, M., Talia, D. (eds.) Euro-Par 2010. LNCS, vol. 6272, pp. 151\u2013162. Springer, Heidelberg (2010). https:\/\/doi.org\/10.1007\/978-3-642-15291-7_16"},{"key":"23_CR12","doi-asserted-by":"crossref","unstructured":"Agha, G.A.: Actors: a model of concurrent computation in distributed systems. Technical report, Massachusetts Inst of Tech Cambridge Artificial Intelligence Lab (1985)","DOI":"10.7551\/mitpress\/1086.001.0001"},{"key":"23_CR13","volume-title":"C Interfaces and Implementations: Techniques for Creating Reusable Software","author":"DR Hanson","year":"1996","unstructured":"Hanson, D.R.: C Interfaces and Implementations: Techniques for Creating Reusable Software. Addison-Wesley Longman Publishing Co., Inc., Boston (1996)"},{"key":"23_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"265","DOI":"10.1007\/3-540-36108-1_18","volume-title":"Distributed Computing","author":"TL Harris","year":"2002","unstructured":"Harris, T.L., Fraser, K., Pratt, I.A.: A practical multi-word compare-and-swap operation. In: Malkhi, D. (ed.) DISC 2002. LNCS, vol. 2508, pp. 265\u2013279. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/3-540-36108-1_18"},{"key":"23_CR15","doi-asserted-by":"crossref","unstructured":"Hendler, D., Incze, I., Shavit, N., Tzafrir, M.: Flat combining and the synchronization-parallelism tradeoff. In: Proceedings of the Twenty-Second Annual ACM Symposium on Parallelism in Algorithms and Architectures, pp. 355\u2013364. ACM (2010)","DOI":"10.1145\/1810479.1810540"},{"key":"23_CR16","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"79","DOI":"10.1007\/978-3-642-15763-9_8","volume-title":"Distributed Computing","author":"D Hendler","year":"2010","unstructured":"Hendler, D., Incze, I., Shavit, N., Tzafrir, M.: Scalable flat-combining based synchronous queues. In: Lynch, N.A., Shvartsman, A.A. (eds.) DISC 2010. LNCS, vol. 6343, pp. 79\u201393. Springer, Heidelberg (2010). https:\/\/doi.org\/10.1007\/978-3-642-15763-9_8"},{"key":"23_CR17","volume-title":"The Art of Multiprocessor Programming","author":"M Herlihy","year":"2011","unstructured":"Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufmann, San Francisco (2011)"},{"issue":"8","key":"23_CR18","doi-asserted-by":"publisher","first-page":"666","DOI":"10.1145\/359576.359585","volume":"21","author":"CAR Hoare","year":"1978","unstructured":"Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666\u2013677 (1978)","journal-title":"Commun. ACM"},{"issue":"4","key":"23_CR19","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/3040220","volume":"3","author":"Joseph Izraelevitz","year":"2017","unstructured":"Izraelevitz, J., Scott, M.L.: Generality and speed in nonblocking dual containers. ACM Trans. Parallel Comput. 3(4), 22:1\u201322:37 (2017). https:\/\/doi.org\/10.1145\/3040220. http:\/\/doi.acm.org\/10.1145\/3040220","journal-title":"ACM Transactions on Parallel Computing"},{"key":"23_CR20","unstructured":"Kahn, G., MacQueen, D.: Coroutines and networks of parallel processes (1976)"},{"key":"23_CR21","doi-asserted-by":"publisher","unstructured":"Koval, N., Alistarh, D., Elizarov, R.: Channel implementations in go and kotlin. https:\/\/doi.org\/10.6084\/m9.figshare.8586311","DOI":"10.6084\/m9.figshare.8586311"},{"key":"23_CR22","doi-asserted-by":"publisher","first-page":"491","DOI":"10.1109\/TPDS.2004.8","volume":"6","author":"MM Michael","year":"2004","unstructured":"Michael, M.M.: Hazard pointers: safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 6, 491\u2013504 (2004)","journal-title":"IEEE Trans. Parallel Distrib. Syst."},{"key":"23_CR23","doi-asserted-by":"crossref","unstructured":"Michael, M.M., Scott, M.L.: Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In: Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing, pp. 267\u2013275. ACM (1996)","DOI":"10.1145\/248052.248106"},{"key":"23_CR24","doi-asserted-by":"crossref","unstructured":"Morrison, A., Afek, Y.: Fast concurrent queues for x86 processors. In: ACM SIGPLAN Notices, vol. 48, pp. 103\u2013112. ACM (2013)","DOI":"10.1145\/2517327.2442527"},{"key":"23_CR25","unstructured":"Odersky, M., et al.: The scala language specification (2007)"},{"key":"23_CR26","unstructured":"Scherer III, W.N., Lea, D., Scott, M.L.: A scalable elimination-based exchange channel. In: SCOOL 2005, p. 83 (2005)"},{"key":"23_CR27","doi-asserted-by":"crossref","unstructured":"Scherer III, W.N., Lea, D., Scott, M.L.: Scalable synchronous queues. In: Proceedings of the Eleventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 147\u2013156. ACM (2006)","DOI":"10.1145\/1122971.1122994"},{"key":"23_CR28","doi-asserted-by":"crossref","unstructured":"Scherer III, W., Scott, M.: Nonblocking concurrent objects with condition synchronization. In: Proceedings of the 18th International Symposium on Distributed Computing (2004)","DOI":"10.1007\/978-3-540-30186-8_13"},{"key":"23_CR29","doi-asserted-by":"crossref","unstructured":"Shavit, N., Touitou, D.: Elimination trees and the construction of pools and stacks: preliminary version. In: Proceedings of the Seventh Annual ACM Symposium on Parallel Algorithms and Architectures, pp. 54\u201363. ACM (1995)","DOI":"10.1145\/215399.215419"},{"issue":"11","key":"23_CR30","doi-asserted-by":"publisher","first-page":"1355","DOI":"10.1006\/jpdc.2000.1621","volume":"60","author":"N Shavit","year":"2000","unstructured":"Shavit, N., Zemach, A.: Combining funnels: a dynamic approach to software combining. J. Parallel Distrib. Comput. 60(11), 1355\u20131387 (2000)","journal-title":"J. Parallel Distrib. Comput."},{"key":"23_CR31","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"240","DOI":"10.1007\/11516798_18","volume-title":"Principles of Distributed Systems","author":"H Sundell","year":"2005","unstructured":"Sundell, H., Tsigas, P.: Lock-free and practical doubly linked list-based deques using single-word compare-and-swap. In: Higashino, T. (ed.) OPODIS 2004. LNCS, vol. 3544, pp. 240\u2013255. Springer, Heidelberg (2005). https:\/\/doi.org\/10.1007\/11516798_18"}],"container-title":["Lecture Notes in Computer Science","Euro-Par 2019: Parallel Processing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-29400-7_23","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,8,13]],"date-time":"2023-08-13T00:04:54Z","timestamp":1691885094000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-29400-7_23"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030293994","9783030294007"],"references-count":31,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-29400-7_23","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"13 August 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"Euro-Par","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"European Conference on Parallel Processing","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"G\u00f6ttingen","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Germany","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"26 August 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"30 August 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"25","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"europar2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/europar.org\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"142","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"36","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"25% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3,94","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4,27","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"double blind review in two cases","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"This content has been made available to all.","name":"free","label":"Free to read"}]}}