大帅

    1. 不是太好试,只能从理论上分析。
    2. 我试试看看
    3. 秋水-剑圣: 0041B53E  mov        eax,dword ptr [g_nCount1 (458A20h)] 0041B543  add        eax,1 0041B546  mov        dword ptr [g_nCount1 (458A20h)],eax 它中间有个ADD EAX,1,,假设在这个地方线程A的时间片到咯,它保存它的线程上下文假设此时EAX的值是1)。它不会去执行 mov        dword ptr [g_nCount1 (458A20h)],eax 就并没有把累加的结果放到g_nCount1所在的内存中,然后线程B执行它的代码。B执行后g_nCount1的值变成2.然后又切换到A执行(A回复线程的上下文).这个时候A就去执行mov        dword ptr [g_nCount1 (458A20h)],eax 此时线程A就把线程B所累加的值覆盖咯。g_nCount1 又变成1咯啊。就这样反复造成的最后两个结果不一样的 但是,我认为读取的值还是正确的,只不读取的还是另外一个线程上一次的值。
    4. 我不要求读取的是最新的值,应为我的程序是循环程序,这次读取的不是最新值,下次还可以读取到一个更新的值,但需要保证的是不得对取一个错误的数。
    5. 秋水-剑圣,你好,你说的出错是什么意思?是否可以这样理解: 例如当A=3时,如果第2个线程取读,在读取的过程中第1个线程要改变这个值例如改为4,则读取的就不对吗?是3还是4还是一个其它的值?我的程序如果读出的是3或者是4都认为是正确,但不能是一个错误的值,这样的情况可以不加锁吗?
    6. 有谁作过S3C2440下ucos-II的移植以及TCP/IP的移植 5/4404 实时操作系统RTOS 2010-04-26
      我的应用很简单,也不用界面显示,好像用不着Linux的

最近访客

< 1/1 >

统计信息

已有55人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:6

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言