Each thread that wants to use ivykis must call iv_init before any other ivykis functions are called.
The very first call to iv_init in a process must run to completion before other threads are allowed to call iv_init, but subsequent calls to iv_init can be done concurrently.
iv_deinit frees all resources allocated by ivykis in this thread, and should be called before this thread exits.
iv_inited returns true if iv_init has been called in this thread. After iv_deinit is called, it will return false.