Hooks internal working
Hi,
is there any place discussing the internal workings of "oxide"/"umod"
from the perspective of "hooks" "overloading" aside.....

Is the execution of   a hooked routine :
A. Chained   execute hooks in order of registration (seems unlikely)
B. Finger like (each hook on a routine is like a finger, it executes, then at the end based on the return result   /true/false/null/ etc ) goes on its way

if it is  "finger like" , how does the system resolve descrepancies in returned results? (sometimes we see messages about conflicting results)

Is there any "waiting" for each task to complete , so all hooked tasks give results at same time, or is it first man wins?

how ie execution thredded?
Hooks are called in the order they are subscribed to in plugins; which plugins are loaded A-Z. All hook calls to plugins are in the same thread as their original location in the game, the main server thread.

Hook calling in Oxide is pretty basic, but the B. method is more similar to what will be happening in uMod.
Cripes...... 
I wondered why results were different depending on the name of the plugin...
so basically "unloading " & re loading the plugin can potentially change the dynamics, since the order of the plugin changes.

Also they get executed on the main gamer thread, are they  split into thier own child threads, and preemptivly executed at same time  or sequentially?

and the question about, the return results?, sice ive seen messages about plugins return results "conflicting"
A "conflict" for a hook is merely a mismatch of return value. It may not necessarily be a conflict, just a warning of a potential conflict. Ex. Returning true in one plugin and false in another for a boolean hook would be an actual conflict; whereas returning true in one plugin and boop in another plugin for an object hook would not be a conflict, since object hooks cancel on any non-null value generally.

Most of the time most game servers aren't multithreaded. Rust has some aspects that are, but for most cases, it's all in the main thread. Plugins can do some things in their own thread by using things such as Unity's coroutines, but hooks are all called in the same thread the server uses for most of its own workings.