1  如何用编程的方式实现ACID事务处理,比如说向两个不同的文件写入一行文本信息,保证全部写入或者一个都不写。要考虑最坏的情况,比如说写入第一个文本完成后死机或断电、IO异常等2 在上一个情况中,只考虑了单任务的情况,如果并发多任务执行,在不用单例排队的情况下,交叉执行任务如何保证事务的一致性哪?希望能够解答的人加我qq8518231 

解决方案 »

  1.   

    这个,细里追究,就比较复杂了。
    给你一个伪码逻辑:
    if (acquireWriteLock(f1) && acquireWriteLock(f2))
    {
        if (! writeLine(f1))
        {
            ...
        }
        if (! writeLine(f2))
        {
            1. recover the writing of f1. 
            ...
        }
    }
    else
    {
        ///
    }
    这里头的写错是排它锁。不允许其它进程读取该文件,以防破坏。最好找一本进程间通讯的资料看看读写锁的实现。难度倒不是特别大。但要处理的细节还挺多的。比如文件1写入成功,但文件2写入失败,但是你恢复1的时候,又恢复失败,怎么办?
      

  2.   

    看看这个:http://www.h2database.com/html/main.html