第13章多用户操作 第13章多用户操作 13.1多用户简介 132多用户 FoXPro的加锁和 出错处理 133死锁的预防
第13章 多用户操作 第13章 13.1 多用户简介 13.2 多用户 FoxPro 的加锁和 出错处理 13.3 死锁的预防
第13章多用户操作 131多用户简介 13.1.1数据的一致性和正确性 假定,分处于两个网络工作站上的两程序甲和乙同 时使用某库文件A。甲打开A库文件后,对其中的数据 进行修改;乙用户打开A库文件后,只是使用其中的数据 (即不进行修改操作)
第13章 多用户操作 13.1 多 用 户 简 介 13.1.1 数据的一致性和正确性 假定, 分处于两个网络工作站上的两程序甲和乙同 时使用某库文件A。 甲打开A库文件后, 对其中的数据 进行修改; 乙用户打开A库文件后, 只是使用其中的数据 (即不进行修改操作)
第13章多用户操作 再进一步假定,甲、乙两用户同时都对同一库文 件A进行修改。此时,情况更复杂了。当两用户修改 结束后,谁也无法确定,库文件更新的数据中,哪些是正 确的,哪些是错误的;哪些数据最终是仅由甲修改的,哪 些数据最终是乙修改的,哪些数据是甲乙双方修改的结 果。也即,在这种情况下,连数据的正确性都无法保证。 加锁可以保证数据的一致性和正确性
第13章 多用户操作 再进一步假定, 甲、 乙两用户同时都对同一库文 件A进行修改。 此时, 情况更复杂了。 当两用户修改 结束后, 谁也无法确定, 库文件更新的数据中, 哪些是正 确的, 哪些是错误的; 哪些数据最终是仅由甲修改的, 哪 些数据最终是乙修改的, 哪些数据是甲乙双方修改的结 果。 也即, 在这种情况下, 连数据的正确性都无法保证。 加锁可以保证数据的一致性和正确性
第13章多用户操作 13.1.2加锁,共享,冲突与死锁 所谓加锁( Locking)就是对库文件加锁(File Locking)。当用户甲对库文件A加锁后,其他用户都不 能再使用此库文件 上述的加锁法虽然可以保证库文件数据的一致性 和正确性,但却不能使多个用户同时使用同一个库文件 即破坏了共享 当用户甲要使用某库文件数据时(不修改,如果不 在乎数据是否一致,他并不需要对库文件A进行加锁;但 若他要求数据必须一致,那么必须给库文件A加锁
第13章 多用户操作 13.1.2 加锁, 共享, 冲突与死锁 所谓加锁 (Locking) 就 是 对 库 文 件 加 锁 (File Locking)。 当用户甲对库文件A加锁后, 其他用户都不 能再使用此库文件。 上述的加锁法虽然可以保证库文件数据的一致性 和正确性, 但却不能使多个用户同时使用同一个库文件, 即破坏了共享。 当用户甲要使用某库文件数据时(不修改), 如果不 在乎数据是否一致, 他并不需要对库文件A进行加锁; 但 若他要求数据必须一致, 那么必须给库文件A加锁
第13章多用户操作 加锁虽然可以保证数据的一致性和正确性,但加锁 也带来了两个新问题:冲突和死锁。冲突( Collision)。 当用户甲对库文件加锁,不允许其他用户使用此库 文件后,用户乙企图打开此库文件,就发生了冲突。或 者,当用户甲对库文件加锁,不允许其他用户修改此库 文件后,用户乙企图修改此库文件,也会发生冲突。 死锁一般在多库文件操作时发生。用户甲对库文 件A加锁,不允许其他用户使用,然后,准备使用库文件 B的数据;但库文件B已被用户乙加锁,不允许其他用户 使用,且用户乙也准备使用库文件A的数据
第13章 多用户操作 加锁虽然可以保证数据的一致性和正确性, 但加锁 也带来了两个新问题: 冲突和死锁。 (Collision)。 当用户甲对库文件加锁, 不允许其他用户使用此库 文件后, 用户乙企图打开此库文件, 就发生了冲突。 或 者, 当用户甲对库文件加锁, 不允许其他用户修改此库 文件后, 用户乙企图修改此库文件, 也会发生冲突。 死锁一般在多库文件操作时发生。 用户甲对库文 件A加锁, 不允许其他用户使用, 然后, 准备使用库文件 B的数据; 但库文件B已被用户乙加锁, 不允许其他用户 使用, 且用户乙也准备使用库文件A的数据