11 个解决方案
#1
学学 互斥,信号量,临界区 !!!
#2
找本 操作系统的书, 好好看看关于 互斥与同步 方面的内容..
出现这种情况,会有什么后果: 后果很严重 !!
会不会一个进程自动的等待另一进程,如果不是,有什么办法避免? 当然不是 ! 办法很多,就是我上面说的那些...
出现这种情况,会有什么后果: 后果很严重 !!
会不会一个进程自动的等待另一进程,如果不是,有什么办法避免? 当然不是 ! 办法很多,就是我上面说的那些...
#3
CPU在某一时刻只能执行一条语句,所以你说的同时访问只是宏观上的,但在分时系统中这一定要考虑下,比如时间片用完,而关键的语句没有执行
#4
典型的线程同步的问题~
这是在写多线程程序不可避免的问题~
解决的办法可以采用:
互吃量
临界区
我一般喜欢互吃量~呵呵~
这是在写多线程程序不可避免的问题~
解决的办法可以采用:
互吃量
临界区
我一般喜欢互吃量~呵呵~
#5
这个对于中断和多线程都有这个问题
使用criticalsection 和 lock都是可以的
使用criticalsection 和 lock都是可以的
#6
如果是win平台。
如果是32位变量,可以用Interlocked系列函数操作,它们保证了互斥
InterlockedIncrement/InterlockedDecrement/InterlockedExchange/.....
其他的可以用CRITICAL_SECTION来保证互斥操作。
这两种是user mode的操作速度较快。
其他的还可以用mutex,semaphore,event来互斥,不过这都是内核对象,速度慢点。
如果是32位变量,可以用Interlocked系列函数操作,它们保证了互斥
InterlockedIncrement/InterlockedDecrement/InterlockedExchange/.....
其他的可以用CRITICAL_SECTION来保证互斥操作。
这两种是user mode的操作速度较快。
其他的还可以用mutex,semaphore,event来互斥,不过这都是内核对象,速度慢点。
#7
我说我的几个回复怎么没了,原来楼主信誉变了......
#8
p v 操作!
#9
》》》CPU在某一时刻只能执行一条语句,所以你说的同时访问只是宏观上的
同意 xianshiqi(日出西山)
同意 xianshiqi(日出西山)
#10
要加一个锁 保证一个线程访问的时候其他线程不能访问 否则数据出现的结果有可能能是错误的 比如两个线程同时访问一个变量对他加1 最后你在每个线程中所得到的结果可能是将这个数加2
#11
多线程的协调问题,如果在一个进程内,可以使用关键区,在不同的进程间,则可以使用事件对象、信号量、互斥量等技术
建议楼主看看《Win32多线程编程》(侯捷翻译的)或者操作系统的书
建议楼主看看《Win32多线程编程》(侯捷翻译的)或者操作系统的书
#1
学学 互斥,信号量,临界区 !!!
#2
找本 操作系统的书, 好好看看关于 互斥与同步 方面的内容..
出现这种情况,会有什么后果: 后果很严重 !!
会不会一个进程自动的等待另一进程,如果不是,有什么办法避免? 当然不是 ! 办法很多,就是我上面说的那些...
出现这种情况,会有什么后果: 后果很严重 !!
会不会一个进程自动的等待另一进程,如果不是,有什么办法避免? 当然不是 ! 办法很多,就是我上面说的那些...
#3
CPU在某一时刻只能执行一条语句,所以你说的同时访问只是宏观上的,但在分时系统中这一定要考虑下,比如时间片用完,而关键的语句没有执行
#4
典型的线程同步的问题~
这是在写多线程程序不可避免的问题~
解决的办法可以采用:
互吃量
临界区
我一般喜欢互吃量~呵呵~
这是在写多线程程序不可避免的问题~
解决的办法可以采用:
互吃量
临界区
我一般喜欢互吃量~呵呵~
#5
这个对于中断和多线程都有这个问题
使用criticalsection 和 lock都是可以的
使用criticalsection 和 lock都是可以的
#6
如果是win平台。
如果是32位变量,可以用Interlocked系列函数操作,它们保证了互斥
InterlockedIncrement/InterlockedDecrement/InterlockedExchange/.....
其他的可以用CRITICAL_SECTION来保证互斥操作。
这两种是user mode的操作速度较快。
其他的还可以用mutex,semaphore,event来互斥,不过这都是内核对象,速度慢点。
如果是32位变量,可以用Interlocked系列函数操作,它们保证了互斥
InterlockedIncrement/InterlockedDecrement/InterlockedExchange/.....
其他的可以用CRITICAL_SECTION来保证互斥操作。
这两种是user mode的操作速度较快。
其他的还可以用mutex,semaphore,event来互斥,不过这都是内核对象,速度慢点。
#7
我说我的几个回复怎么没了,原来楼主信誉变了......
#8
p v 操作!
#9
》》》CPU在某一时刻只能执行一条语句,所以你说的同时访问只是宏观上的
同意 xianshiqi(日出西山)
同意 xianshiqi(日出西山)
#10
要加一个锁 保证一个线程访问的时候其他线程不能访问 否则数据出现的结果有可能能是错误的 比如两个线程同时访问一个变量对他加1 最后你在每个线程中所得到的结果可能是将这个数加2
#11
多线程的协调问题,如果在一个进程内,可以使用关键区,在不同的进程间,则可以使用事件对象、信号量、互斥量等技术
建议楼主看看《Win32多线程编程》(侯捷翻译的)或者操作系统的书
建议楼主看看《Win32多线程编程》(侯捷翻译的)或者操作系统的书