{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T21:07:00Z","timestamp":1760044020744,"version":"3.41.0"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2017,9,30]],"date-time":"2017-09-30T00:00:00Z","timestamp":1506729600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"FP7 European Commission, Marie Curie Actions","award":["PCIG12-GA-2012-333185"],"award-info":[{"award-number":["PCIG12-GA-2012-333185"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Parallel Comput."],"published-print":{"date-parts":[[2017,9,30]]},"abstract":"<jats:p>\n            Stream processing is a computational paradigm for on-the-fly processing of live data. This paradigm lends itself to implementations that can provide high throughput and low latency by taking advantage of various forms of parallelism that are naturally captured by the stream processing model of computation, such as pipeline, task, and data parallelism. In this article, we describe the design and implementation of\n            <jats:italic>C-Stream<\/jats:italic>\n            , which is an elastic stream processing engine. C-Stream encompasses three unique properties. First, in contrast to the widely adopted event-based interface for developing streaming operators, C-Stream provides an interface wherein each operator has its own driver loop and relies on data availability application programming interfaces (APIs) to decide when to perform its computations. This self-control-based model significantly simplifies the development of operators that require multiport synchronization. Second, C-Stream contains a dynamic scheduler that manages the multithreaded execution of the operators. The scheduler, which is customizable via plug-ins, enables the execution of the operators as co-routines, using any number of threads. The base scheduler implements back-pressure, provides data availability APIs, and manages preemption and termination handling. Last, C-Stream varies the degree of parallelism to resolve bottlenecks by both dynamically changing the number of threads used to execute an application and adjusting the number of replicas of data-parallel operators. We provide an experimental evaluation of C-Stream. The results show that C-Stream is scalable, highly customizable, and can resolve bottlenecks by dynamically adjusting the level of data parallelism used.\n          <\/jats:p>","DOI":"10.1145\/3184120","type":"journal-article","created":{"date-parts":[[2018,4,27]],"date-time":"2018-04-27T16:00:21Z","timestamp":1524844821000},"page":"1-27","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["C-Stream"],"prefix":"10.1145","volume":"4","author":[{"given":"Semih","family":"\u015eahin","sequence":"first","affiliation":[{"name":"Georgia Tech, Atlanta, GA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Bu\u011fra","family":"Gedik","sequence":"additional","affiliation":[{"name":"Bilkent University, Ankara, Turkey"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,4,27]]},"reference":[{"volume-title":"Biennial Conference on Innovative Data Systems Research (CIDR\u201905)","year":"2005","author":"Abadi Daniel J.","key":"e_1_2_1_1_1"},{"volume-title":"Fundamentals of Stream Processing: Application Design, Systems, and Analytics","author":"Andrade Henrique","key":"e_1_2_1_2_1","doi-asserted-by":"crossref","DOI":"10.1017\/CBO9781139058940"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/872757.872854"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1385989.1386023"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/1315451.1315523"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/872757.872857"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094852"},{"key":"e_1_2_1_8_1","unstructured":"Cilk++. 2015. Cilk++. Retrieved May 2015 from https:\/\/cilkplus.org.  Cilk++. 2015. Cilk++. Retrieved May 2015 from https:\/\/cilkplus.org."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1327452.1327492"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/69.50905"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993553"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1743384.1743467"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.1139"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1376616.1376729"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2013.295"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/93597.98720"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2611286.2611294"},{"volume-title":"International Workshop on Big Dynamic Distributed Data (BD3\u201913)","year":"2013","author":"Heinze Thomas","key":"e_1_2_1_18_1"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2611286.2611314"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2013.2243535"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2528412"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1272996.1273005"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2320765.2320789"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2611286.2611304"},{"key":"e_1_2_1_25_1","unstructured":"OpenMP. 2015. OpenMP. Retrieved May 2015 from http:\/\/openmp.org.  OpenMP. 2015. OpenMP. Retrieved May 2015 from http:\/\/openmp.org."},{"key":"e_1_2_1_26_1","unstructured":"S4. 2015. S4 project. Retrieved May 2015 from http:\/\/incubator.apache.org\/s4.  S4. 2015. S4 project. Retrieved May 2015 from http:\/\/incubator.apache.org\/s4."},{"key":"e_1_2_1_27_1","unstructured":"Samza. 2015. Apache Samza project. Retrieved May 2015 from http:\/\/incubator.apache.org\/samza.  Samza. 2015. Apache Samza project. Retrieved May 2015 from http:\/\/incubator.apache.org\/samza."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/IRI.2014.7051865"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2013.221"},{"key":"e_1_2_1_30_1","unstructured":"Storm. 2015. Apache Storm project. Retrieved May 2015 from http:\/\/storm-project.net\/.  Storm. 2015. Apache Storm project. Retrieved May 2015 from http:\/\/storm-project.net\/."},{"key":"e_1_2_1_31_1","unstructured":"StreamBase. 2015. Tibco Streambase. Retrieved May 2015 from http:\/\/www.streambase.com.  StreamBase. 2015. Tibco Streambase. Retrieved May 2015 from http:\/\/www.streambase.com."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2012.333"},{"volume-title":"Proceedings of the International Conference on Compiler Construction (CC\u201902)","author":"Thies William","key":"e_1_2_1_33_1"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1229428.1229433"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2013.2245991"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1645413.1645420"}],"container-title":["ACM Transactions on Parallel Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3184120","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3184120","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:08:29Z","timestamp":1750208909000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3184120"}},"subtitle":["A Co-routine-Based Elastic Stream Processing Engine"],"short-title":[],"issued":{"date-parts":[[2017,9,30]]},"references-count":36,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2017,9,30]]}},"alternative-id":["10.1145\/3184120"],"URL":"https:\/\/doi.org\/10.1145\/3184120","relation":{},"ISSN":["2329-4949","2329-4957"],"issn-type":[{"type":"print","value":"2329-4949"},{"type":"electronic","value":"2329-4957"}],"subject":[],"published":{"date-parts":[[2017,9,30]]},"assertion":[{"value":"2015-09-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-01-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-04-27","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}