1. A method, comprising: generating a plurality of threads associated with an application configured for execution on a computing device; receiving, at the computing device, an allocation request to allocate thread-specific memory for an executable thread of the plurality of threads; in response to the allocation request, the computing device: allocating storage for the thread-specific memory, establishing one or more associations between the allocated thread-specific memory and the executable thread, wherein the allocated thread-specific memory comprises register storage and a call stack for the executable thread, wherein the one or more associations comprise an association between the call stack and the executable thread, and wherein the call stack stores data regarding return addresses and variables associated with a function called by the executable thread, and providing an indication that the executable thread is ready for execution; after providing the indication that the executable thread is ready for execution, executing the executable thread using the computing device; receiving, at the computing device, a sleep request to suspend execution of the executable thread via a function referenced by the executable thread, wherein the function referenced by the executable thread comprises a thread-specific-storage-allocation parameter that indicates whether the executable thread requests deallocation of thread-specific memory; and in response to the sleep request to suspend execution of the executable thread, the computing device: determining whether the thread-specific-storage-allocation parameter indicates that the allocated thread-specific memory is to be deallocated for the executable thread, and in response to the thread-specific-storage-allocation parameter indicating that the allocated thread-specific memory is to be deallocated for the executable thread: deallocating storage for the allocated thread-specific memory, setting the register storage to a null value, and setting at least the association between the call stack and the executable thread to a null value to indicate that at least the call stack of the thread-specific memory is not allocated to the executable thread.