Ok lets say there are two pools. Pool A and Pool B they are on opposite sides of the world. Lets say that pool A finds a hash that works for the current block and that pool B also finds a hash for the current block. They both start broadcasting to others on the network. How long would this take to resolve. What is to prevent two competing instances of Bitcoin? Lets say that half of the pools accepts A solution and half Accept B solution. They would have roughly equal mining power, how many blocks would it take to say one is invalid and what if the two blocks stayed equally matched? Even if one eventually wins out wouldn't a lot of people lose money because of how many transactions were invalidated?
What you describe happens normally and is not an issue in practice.
Even if one eventually wins out wouldn't a lot of people lose money because of how many transactions were invalidated?
No, those transactions are included in later blocks. I'm not sure of the exact method but I think it must be either that nodes return transactions from stale blocks to their mempool or because the originator routinely retransmits the transaction. Either way, I believe this normally gets resolved quickly without any need for human intervention anywhere.