A miner starts mining a block on receiving the message to mine. The message contains the necessary block information (called raw block).
If a miner receives a new raw block that has index greater than current block it is mining, it will abandon the current mining and start mining the new block.
A miner should be informed of any block mined by another miners. On receiving the message, the miner stops the current block mining if the new block's index is equal or superior to the the index of block it is currently mining.
The first implementation is to be done such that a block is found every 5 minute and be as little resource intensive as possible.