我有一个共享的记忆库,许多不同的透镜可以要求分配。 要求从中拨款将发生在每一条路面,但read的面积可能很小,往往只有一只read。 我不敢肯定,以下处理方式中哪些是更好的。
最后,我可能需要执行和看到两者产生更有利的结果...... 我也担心,即便是第2号的思考,此时此刻也可能是不成熟的,因为我实际上没有使用这一共同资源的法律。 但是,这个问题令人 interesting切,继续使我偏离其他工作。
1) Create a mutex and have a thread attempt to lock it before obtaining the allocation, then unlocking it.
(2) 每当需要分配申请时,每个校正都登记申请时间,然后在申请时间段(同时(结果=NUL)栏(斜体=NUL)等待申请时间才能取得结果。 单一校正不断使申请时间固定,使拨款额得以分配,从而导致申请时间。
Number 1 is the simple solution, but a single thread could potentially hog the lock if the timing is right. The second is more complex, but ensures fairness among threads when pulling from the resource. However it still blocks the requesting threads, and if there are many threads the iteration could burn cycles without doing any actual allocations until it finds a request to fulfill.
NOTE: C on Linux using pthreads