Exclusive Time of Functions

给一个单线程CPU和一个log, 求问每个thread自己独占CPU的时间. 这个题很tricky, 因为根本看不懂题目要求, 本来以为简单的线性扫描就可以了, 然后发现thread里有递归的出现,即: 同一个id连续start多次. 那么只能模拟栈了. 然后还需要注意的是, 因为是单线程, 所以不会出现两个线程重叠的情况, 即: 一个id end在另一个id start 和end中.

用stack的时候, 只放start time, 然后遇到end的时候, 计算time chunk. 因为end在time chunk之后, 所以要做差后+1. 另外, 还需要注意, 每当一个id end, 要看是否stack中有其他thread在等待, 这时候要在等待的id中减去当前的时间, 因为对于等待的id, 这段时间已经被当前id所占有.