S1: Lookup for some input data
S2: IF not found SET IT
S3: INSERT DATA
S4: ELSE RETURN
最初没有存储数据。如果 2 个线程同时查找相同的输入数据,则查找在两种情况下都返回 FALSE。然后都经历了长 SET 阶段。最后,一个非同步的 Insert 方法中的单例服务 Thread Inserts 条目。
这样,虽然查找的目的是永远不要让相同的数据重复两次,但由于 2 个线程处理相同的数据,它的目的并没有解决。如何在多线程程序中处理这种情况?