[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-0-en-105":3,"doc-detail-156008-en":59,"doc-seo-156008-105":81},{"code":4,"msg":5,"data":6},0,"success",[7,13,18,23,28,33,38,43,48,51,55],{"id":8,"doc_module":4,"doc_module_name":9,"category_name":10,"show_sort_weight":11,"slug":12},1,"Document","Story & Novel",90,"story-novel",{"id":14,"doc_module":4,"doc_module_name":9,"category_name":15,"show_sort_weight":16,"slug":17},2,"Literature",80,"literature",{"id":19,"doc_module":4,"doc_module_name":9,"category_name":20,"show_sort_weight":21,"slug":22},4,"Exam",70,"exam",{"id":24,"doc_module":4,"doc_module_name":9,"category_name":25,"show_sort_weight":26,"slug":27},5,"Comic",60,"comic",{"id":29,"doc_module":4,"doc_module_name":9,"category_name":30,"show_sort_weight":31,"slug":32},6,"Technology",50,"technology",{"id":34,"doc_module":4,"doc_module_name":9,"category_name":35,"show_sort_weight":36,"slug":37},7,"Healthcare",40,"healthcare",{"id":39,"doc_module":4,"doc_module_name":9,"category_name":40,"show_sort_weight":41,"slug":42},8,"Research & Report",30,"research-report",{"id":44,"doc_module":4,"doc_module_name":9,"category_name":45,"show_sort_weight":46,"slug":47},9,"Religion & Spirituality",20,"religion-spirituality",{"id":46,"doc_module":4,"doc_module_name":9,"category_name":49,"show_sort_weight":46,"slug":50},"World Cup","world-cup",{"id":52,"doc_module":4,"doc_module_name":9,"category_name":53,"show_sort_weight":52,"slug":54},10,"Lifestyle","lifestyle",{"id":56,"doc_module":4,"doc_module_name":9,"category_name":57,"show_sort_weight":24,"slug":58},19,"General","general",{"code":4,"msg":5,"data":60},{"doc_id":61,"user_id":62,"nickname":63,"user_avatar":64,"doc_module":4,"category_id":39,"category_name":40,"doc_title":65,"doc_description":66,"doc_content":67,"file_id":68,"file_url":69,"file_type":70,"file_size":71,"view_count":39,"is_deleted":4,"is_public":8,"is_downloadable":8,"audit_status":8,"page_count":72,"language":73,"language_code":74,"site_id":75,"html_lang":74,"table_of_contents":76,"faqs":77,"seo_title":78,"seo_description":66,"update_tm":79,"read_time":80,"preview_page_count":4},156008,1374391974564,"Clementine","https://ap-avatar.wpscdn.com/avatar/14000253aa45c000a9e?x-image-process=image/resize,m_fixed,w_180,h_180&k=1779874745381141002","Multiprocessor Support for Event-Driven Programs - Paper Abstract","This paper presents libasync-smp, an asynchronous programming library that enables event-driven applications to exploit multiprocessors by executing event handlers in parallel. Concurrency is controlled by assigning each event a color: events sharing the same color run serially, while events with different colors run in parallel. The approach incrementally reveals parallelism in existing systems by marking computationally intensive callbacks that do not share mutable state. Evaluations show multiprocessor speedup with minimal code changes, including a significant improvement in parallel cryptography within an SFS file server.","Multiprocessor Support for Event-Driven Programs  \nNickolai Zeldovich􀀃, Alexander Yip, Frank Dabek,  \nRobert T. Morris, David Maziresy, Frans Kaashoek [nickolai@cs.stanford.edu](nickolai@cs.stanford.edu), fyipal, fdabek, rtm, [kaashoek](kaashoekg@lcs.mit.edu)[g](kaashoekg@lcs.mit.edu)[@lcs.mit.edu](kaashoekg@lcs.mit.edu), [dm@cs.nyu.edu](dm@cs.nyu.edu)  \nMIT Laboratory for Computer Science  \n200 Technology Square  \nCambridge, MA 02139  \nAbstract  \nThis paper presents a new asynchronous programming library (libasync-smp) that allows event-driven applications to take advantage of multiprocessors by running code for event handlers in parallel. To control the concurrency between events, the programmer can specify a color for each event: events with the same color (the default case) are handled serially; events with different colors can be handled in parallel. The programmer can incrementally expose parallelism in existing event-driven applications by assigning different colors to computationally-intensive events that do not share mutable state.  \nAn evaluation of libasync-smp demonstrates that applications achieve multiprocessor speedup with little programming effort. As an example, parallelizing the cryptography in the SFS ﬁle server required about 90 lines of changed code in two modules, out of a total of about 12,000 lines. Multiple clients were able to read large cached ﬁles from the libasync-smp SFS server running on a 4-CPU machine 2.5 times as fast as from an unmodiﬁed uniprocessor SFS server on one CPU. Applications without computationally intensive tasks also beneﬁt: an event-driven Web server achieves 1.5 speedup on four CPUs with multiple clients reading small cached ﬁles.  \n1 Introduction  \nTo obtain high performance, servers must overlap computation with I/O. Programs typically achieve this overlap using threads or events. Threaded programs typically process each request in a separate thread; when one thread blocks waiting for I/O, other threads can run. Threads provide an intuitive programming model and can take advantage of multiprocessors; however, they  \n􀀃 Stanford University y New York University  \nrequire coordination of accesses by different threads to shared state, even on a uniprocessor. In contrast, eventbased programs are structured as a collection ofcallback functions which a main loop calls as I/O events occur. Event-based programs execute callbacks serially, so the programmer need not worry about concurrency control; however, event-based programs until now have been unable to take full advantage of multiprocessors without running multiple copies of an application or introducing ﬁne-grained synchronization.  \nThe contribution of this paper is libasync-smp, a library that supports event-driven programs on multiprocessors. libasync-smp is intended to support the construction ofuser-level systems programs, particularly network servers and clients; we show that these applications can achieve performance gains on multiprocessors by exploiting coarse-grained parallelism. libasync-smp is intended for programs that have natural opportunities for parallel speedup; it has no support for expressing very ﬁne-grained parallelism. The goal of libasync-smp’s concurrency control mechanisms is to provide enough concurrency to extract parallel speedup without requiring the programmer to reason about the correctness of a ﬁnegrained parallel program.  \nMuch of the effort required to make existing eventdriven programs take advantage of multiprocessors isin specifying which events may be handled in parallel. libasync-smp provides a simple mechanism to allow the programmer to incrementally add parallelism to uniprocessor applications as an optimization. This mechanism allows the programmer to assign a color to each callback. Callbacks with different colors can execute in parallel. Callbacks with the same color execute serially. By default, libasync-smp assigns all callbacks the same color, so existing programs continue to work ","cbCaiqrXUi1XbDvL","https://ap.wps.com/l/cbCaiqrXUi1XbDvL","pdf",139130,14,"English","en",105,"# Abstract\n# Introduction\n## Event-driven vs threaded servers\n## The contribution of libasync-smp\n## Concurrency control via event colors\n# Design and implementation overview\n## Examples of application integration","[{\"question\":\"What is libasync-smp designed to do in event-driven systems?\",\"answer\":\"libasync-smp is a library that supports event-driven programs on multiprocessors, allowing event handlers to run in parallel to exploit available CPU resources.\"},{\"question\":\"How does libasync-smp control concurrency between events?\",\"answer\":\"Each event is assigned a color. Callbacks with the same color execute serially, and callbacks with different colors can execute in parallel.\"},{\"question\":\"What kind of code changes are required to gain speedup?\",\"answer\":\"The paper reports that multiprocessor speedup can be achieved with little programming effort; for the SFS file server example, parallelizing cryptography required about 90 lines changed across two modules.\"}]","Multiprocessor Support for Event-Driven Programs - Paper Abstract | PDF",1787942626,35,{"code":4,"msg":82,"data":83},"ok",{"site_id":75,"language":74,"slug":84,"title":65,"keywords":85,"description":66,"schema_data":86,"social_meta":140,"head_meta":142,"extra_data":144,"updated_unix":79},"multiprocessor-support-for-event-driven-programs-paper-abstract","",{"@graph":87,"@context":139},[88,102,122],{"@type":89,"itemListElement":90},"BreadcrumbList",[91,95,97,100],{"item":92,"name":93,"@type":94,"position":8},"https://docshare.wps.com","Home","ListItem",{"item":96,"name":9,"@type":94,"position":14},"https://docshare.wps.com/document/",{"item":98,"name":40,"@type":94,"position":99},"https://docshare.wps.com/document/research-report/",3,{"item":101,"name":65,"@type":94,"position":19},"https://docshare.wps.com/document/multiprocessor-support-for-event-driven-programs-paper-abstract/156008/",{"url":101,"name":65,"@type":103,"image":104,"author":109,"headline":65,"publisher":111,"fileFormat":114,"inLanguage":74,"description":66,"dateModified":115,"datePublished":116,"encodingFormat":114,"isAccessibleForFree":117,"interactionStatistic":118},"DigitalDocument",{"url":105,"@type":106,"width":107,"height":108},"https://docshare.wps.com/thumbnails/multiprocessor-support-for-event-driven-programs-paper-abstract/156008.png","ImageObject",300,407,{"name":63,"@type":110},"Person",{"url":92,"name":112,"@type":113},"DocShare","Organization","application/pdf","2026-11-01","2026-08-28",true,{"@type":119,"interactionType":120,"userInteractionCount":39},"InteractionCounter",{"@type":121},"ViewAction",{"@type":123,"mainEntity":124},"FAQPage",[125,131,135],{"name":126,"@type":127,"acceptedAnswer":128},"What is libasync-smp designed to do in event-driven systems?","Question",{"text":129,"@type":130},"libasync-smp is a library that supports event-driven programs on multiprocessors, allowing event handlers to run in parallel to exploit available CPU resources.","Answer",{"name":132,"@type":127,"acceptedAnswer":133},"How does libasync-smp control concurrency between events?",{"text":134,"@type":130},"Each event is assigned a color. Callbacks with the same color execute serially, and callbacks with different colors can execute in parallel.",{"name":136,"@type":127,"acceptedAnswer":137},"What kind of code changes are required to gain speedup?",{"text":138,"@type":130},"The paper reports that multiprocessor speedup can be achieved with little programming effort; for the SFS file server example, parallelizing cryptography required about 90 lines changed across two modules.","https://schema.org",{"og:url":101,"og:type":141,"og:title":65,"og:site_name":112,"og:description":66},"article",{"robots":143,"canonical":101},"index,follow",{"doc_id":61,"site_id":75}]