25/01/2019
It's a general problem for every high-level programming languages. Even JAVA. The question is why and how it's possible!?
In Microsoft C # and Java they are using external DLLs because pure C and assembly are one dimension languages and they don't have hierarchy of OO like what we know in high level programming languages. Therefore when you want to move in this hierarchical system in a high level programming language, you must have a recursive algorithm. So, when you reached root of an OO language you must pass your data into a single dimension language like C or assembly or something else because you want to pass your data into C/GPU and you must pass it through your bus (32/64 bits buses). So it means you are passing your data from a 2D world to 1D. Because of this when they want to return data, the high level programming language must wait for them and if your C/GPU clock were busy on other threads, the higher level will not receive the responses at arranged time and it must pass a result for your function and in C # it will return the false result for continuing your job! This is because of boolean architecture of our machines and they can not describe singularity or null in our system and they used x00 as null!
Indeed in digital world we have only two entities (0 and 1) therefore there are no other numbers between them. So you can not describe singularity and you must use it like characters and it's hexadecimal code is x00. Now you have 1 bit in wise operations like If conditions and you can not return null from an OR, AND, XOR, XNOR gates in CPU! This is the problem called day zero!