Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Representing control in the presence of one-shot continuations
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
SEDA: an architecture for well-conditioned, scalable internet services
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Cooperative Task Management Without Manual Stack Management
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Ninja: A Framework for Network Services
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Event-driven programming for robust software
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
A hierarchical internet object cache
ATEC '96 Proceedings of the 1996 annual conference on USENIX Annual Technical Conference
Flash: an efficient and portable web server
ATEC '99 Proceedings of the annual conference on USENIX Annual Technical Conference
Capriccio: scalable threads for internet services
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Fast Paths in Concurrent Programs
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Stream engine: a new kernel interface for high-performance internet streaming servers
Web content caching and distribution
A stackless runtime environment for a Pi-calculus
Proceedings of the 2nd international conference on Virtual execution environments
Beyond event handlers: programming wireless sensors with attributed state machines
IPSN '05 Proceedings of the 4th international symposium on Information processing in sensor networks
MANTIS OS: an embedded multithreaded operating system for wireless micro sensor platforms
Mobile Networks and Applications
Improving connection management of the OpenLDAP directory server
PDCN'06 Proceedings of the 24th IASTED international conference on Parallel and distributed computing and networks
Protothreads: simplifying event-driven programming of memory-constrained embedded systems
Proceedings of the 4th international conference on Embedded networked sensor systems
RETOS: resilient, expandable, and threaded operating system for wireless sensor networks
Proceedings of the 6th international conference on Information processing in sensor networks
The Farsite project: a retrospective
ACM SIGOPS Operating Systems Review - Systems work at Microsoft Research
Shared-stack cooperative threads
Proceedings of the 2007 ACM symposium on Applied computing
Tasks: language support for event-driven programming
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Acceptable strategies for improving web server performance
ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Making events less slippery with eel
HOTOS'05 Proceedings of the 10th conference on Hot Topics in Operating Systems - Volume 10
Comparing the performance of web server architectures
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Programming asynchronous layers with CLARITY
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Programming models for sensor networks: A survey
ACM Transactions on Sensor Networks (TOSN)
HOTOS'07 Proceedings of the 11th USENIX workshop on Hot topics in operating systems
PreeMe: preemptive real-time task management for event-driven sensor operating systems
Proceedings of the 2008 ACM symposium on Applied computing
ATC'07 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
Eve: a measurement-centric emulation environment for adaptive internet servers
SpringSim '07 Proceedings of the 2007 spring simulaiton multiconference - Volume 1
Lwt: a cooperative thread library
Proceedings of the 2008 ACM SIGPLAN workshop on ML
OTL: On-Demand Thread Stack Allocation Scheme for Real-Time Sensor Operating Systems
ICCS '07 Proceedings of the 7th international conference on Computational Science, Part IV: ICCS 2007
SESAME-P: Memory Pool-Based Dynamic Stack Management for Sensor Operating Systems
DCOSS '08 Proceedings of the 4th IEEE international conference on Distributed Computing in Sensor Systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Scala Actors: Unifying thread-based and event-based programming
Theoretical Computer Science
Proceedings of the 4th ACM European conference on Computer systems
Hop, a Fast Server for the Diffuse Web
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
Wireless sensor network operating systems: a survey
International Journal of Sensor Networks
Race-free and memory-safe multithreading: design and implementation in cyclone
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Multithreading optimization techniques for sensor network operating systems
EWSN'07 Proceedings of the 4th European conference on Wireless sensor networks
Actors that unify threads and events
COORDINATION'07 Proceedings of the 9th international conference on Coordination models and languages
A concurrency abstraction for reliable sensor network applications
Proceedings of the 12th Monterey conference on Reliable systems on unreliable networked platforms
A compact hard real-time operating system for wireless sensor nodes
INSS'09 Proceedings of the 6th international conference on Networked sensing systems
Multiscale not multicore: efficient heterogeneous cloud computing
Proceedings of the 2010 ACM-BCS Visions of Computer Science Conference
Running multi-sequence applications in wireless sensor networks
Proceedings of the 7th International Conference on Advances in Mobile Computing and Multimedia
Asynchronous event handling and safety critical Java
Proceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems
USENIX'09 Proceedings of the 2009 conference on USENIX Annual technical conference
Turning down the LAMP: software specialisation for the cloud
HotCloud'10 Proceedings of the 2nd USENIX conference on Hot topics in cloud computing
Scalable i/o event handling for GHC
Proceedings of the third ACM Haskell symposium on Haskell
Type-safe eventful sessions in java
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Self-replicating objects for multicore platforms
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
FlexSC: flexible system call scheduling with exception-less system calls
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
The F# asynchronous programming model
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Buttress: a toolkit for flexible and high fidelity I/O benchmarking
FAST'04 Proceedings of the 3rd USENIX conference on File and storage technologies
AC: composable asynchronous IO for native languages
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Feedback control with prediction for thread allocation in pipeline architecture web server
ICDCN'06 Proceedings of the 8th international conference on Distributed Computing and Networking
Dynamic thread management in kernel pipeline web server
NPC'05 Proceedings of the 2005 IFIP international conference on Network and Parallel Computing
Y-Threads: supporting concurrency in wireless sensor networks
DCOSS'06 Proceedings of the Second IEEE international conference on Distributed Computing in Sensor Systems
Asynchronous event handling and Safety Critical Java
Concurrency and Computation: Practice & Experience
MSEPT'12 Proceedings of the 2012 international conference on Multicore Software Engineering, Performance, and Tools
Pause 'n' play: formalizing asynchronous C#
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Adaptive defenses for commodity software through virtual application partitioning
Proceedings of the 2012 ACM conference on Computer and communications security
Molecule: using monadic and streaming I/O to compose process networks on the JVM
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Fair cooperative multithreading: typing termination in a higher-order concurrent imperative language
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Compiler support for lightweight context switching
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
Node.Scala: implicit parallel programming for high-performance web services
Euro-Par'12 Proceedings of the 18th international conference on Parallel Processing
Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
Toward common patterns for distributed, concurrent, fault-tolerant code
HotOS'13 Proceedings of the 14th USENIX conference on Hot Topics in Operating Systems
Feel different on the Java platform: the star programming language
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Mio: a high-performance multicore io manager for GHC
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
A survey of support for structured communication in concurrency control models
Journal of Parallel and Distributed Computing
Hi-index | 0.00 |
Event-based programming has been highly touted in recent years as the best way to write highly concurrent applications. Having worked on several of these systems, we now believe this approach to be a mistake. Specifically, we believe that threads can achieve all of the strengths of events, including support for high concurrency, low overhead, and a simple concurrency model. Moreover, we argue that threads allow a simpler and more natural programming style. We examine the claimed strengths of events over threads and show that the weaknesses of threads are artifacts of specific threading implementations and not inherent to the threading paradigm. As evidence, we present a user-level thread package that scales to 100,000 threads and achieves excellent performance in a web server. We also refine the duality argument of Lauer and Needham, which implies that good implementations of thread systems and event systems will have similar performance. Finally, we argue that compiler support for thread systems is a fruitful area for future research. It is a mistake to attempt high concurrency without help from the compiler, and we discuss several enhancements that are enabled by relatively simple compiler changes.