2009校园招聘系统部试题(一)
一、编程题(30分)
现代的处理器提供了compare-and-swap原子操作:
int compare_and_swap(int * pv, const int cv, const int nv);
即比较*pv与cv,如果相等,则把*pv值替换为nv并返回*pv原值,否则返回*pv的值。
请利用上述原子操作实现如下操作:
int inc_if_gt_zero(int * pv);
即如果*pv > 0,则把*pv加1并返回修改后的*pv,否则返回*pv。
结果要线程安全且不使用锁、信号灯、互斥量、临界区或类似机制。