Merge pull request #90 from gonzus/gonzus/clean-up-faq

Cleaned up FAQ doc
This commit is contained in:
Manos 2020-07-20 17:25:19 +01:00 committed by GitHub
commit 5d07288262
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
### Why isn't `pthread_exit()` used to exit a thread?
###Why isn't pthread_exit() used to exit a thread? `thread_do` used to use `pthread_exit()`. However that resulted in
`thread_do` used to use pthread_exit(). However that resulted in hard times of testing for memory leaks. The reason is that on `pthread_exit()`
hard times of testing for memory leaks. The reason is that on pthread_exit()
not all memory is freed bt pthread (probably for future threads or false not all memory is freed bt pthread (probably for future threads or false
belief that the application is terminating). For these reasons a simple return belief that the application is terminating). For these reasons a simple return
is used. is used.
@ -9,22 +9,23 @@ is used.
Interestingly using `pthread_exit()` results in much more memory being allocated. Interestingly using `pthread_exit()` results in much more memory being allocated.
###Why do you use sleep() after calling thpool_destroy()? ### Why do you use `sleep()` after calling `thpool_destroy()`?
This is needed only in the tests. The reason is that if you call thpool_destroy
and then exit immedietely, maybe the program will exit before all the threads This is needed only in the tests. The reason is that if you call `thpool_destroy()`
and then exit immediately, maybe the program will exit before all the threads
had the time to deallocate. In that way it is impossible to check for memory had the time to deallocate. In that way it is impossible to check for memory
leaks. leaks.
In production you don't have to worry about this since if you call exit, In production you don't have to worry about this since if you call `exit()`,
immedietely after you destroyied the pool, the threads will be freed immediately after you destroyed the pool, the threads will be freed
anyway by the OS. If you eitherway destroy the pool in the middle of your anyway by the OS. If you anyway destroy the pool in the middle of your
program it doesn't matter again since the program will not exit immediately program it doesn't matter again since the program will not exit immediately
and thus threads will have more than enough time to terminate. and thus threads will have more than enough time to terminate.
### Why does `wait()` use all my CPU?
###Why does wait() use all my CPU? Notice: As of 11-Dec-2015 `wait()` doesn't use polling anymore. Instead a conditional variable is being used so in theory there should not be any CPU overhead.
Notice: As of 11-Dec-2015 wait() doesn't use polling anymore. Instead a conditional variable is being used so in theory there should not be any CPU overhead.
Normally `wait()` will spike CPU usage to full when called. This is normal as long as it doesn't last for more than 1 second. The reason this happens is that `wait()` goes through various phases of polling (what is called smart polling). Normally `wait()` will spike CPU usage to full when called. This is normal as long as it doesn't last for more than 1 second. The reason this happens is that `wait()` goes through various phases of polling (what is called smart polling).