由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教register
相关主题
Volatile variables do not provide any atomicity (转载)做题了,做题了,看谁能搞清楚
有人知道AtomicInteger是如何实现的么C++ software engineer 3 years expectation
java的同步问题请教thread, semaphore, 问题。
C++怎么保证2行代码atomicRestaurant Reservation System...
Question on synchronization between processesHow to tell if two computers are accurately synchronized?
科普贴,fusion IOjava synchronized 问题
哈,居然写完了作业Kernel Programming Question: timestamp and synchronization
java里用synchronized包住block就可以保护多线程同步问题了,这就是c里面的mutex吧?multithread synchronization
相关话题的讨论汇总
话题: register话题: int话题: testandset话题: swap话题: set
进入Programming版参与讨论
1 (共1页)
e*******e
发帖数: 32
1
看到个题目:
implement a test-and-set: check if a register is 0 or not. If it is 0,
set it to 1, and return 0
请问应该从何下手?谢谢
c*****g
发帖数: 119
2
int TestAndSet(int* register)
{
int v;
v = Swap(register, 1);
return v!=0;
}
Swap() should be atomic.

【在 e*******e 的大作中提到】
: 看到个题目:
: implement a test-and-set: check if a register is 0 or not. If it is 0,
: set it to 1, and return 0
: 请问应该从何下手?谢谢

k****f
发帖数: 3794
3
要控制reg,只能上汇编了
有些reg你读不到的,也没法改的

【在 e*******e 的大作中提到】
: 看到个题目:
: implement a test-and-set: check if a register is 0 or not. If it is 0,
: set it to 1, and return 0
: 请问应该从何下手?谢谢

e*******e
发帖数: 32
4
register是keyword,在这里怎么能做Input variable呢?

【在 c*****g 的大作中提到】
: int TestAndSet(int* register)
: {
: int v;
: v = Swap(register, 1);
: return v!=0;
: }
: Swap() should be atomic.

c*****g
发帖数: 119
5
com'n, it's pseudo-code

【在 e*******e 的大作中提到】
: register是keyword,在这里怎么能做Input variable呢?
e*******e
发帖数: 32
6
那用register跟普通int变量有什么区别呢?

int TestAndSet(int* register)
{
int v;
v = Swap(register, 1);
return v!=0;
}
Swap() should be atomic.

【在 c*****g 的大作中提到】
: int TestAndSet(int* register)
: {
: int v;
: v = Swap(register, 1);
: return v!=0;
: }
: Swap() should be atomic.

m*****e
发帖数: 4193
7
You need to learn assembly. This is highly arch-dependent. But usually there
is one instruction or prefix for exactly this purpose.

【在 e*******e 的大作中提到】
: 看到个题目:
: implement a test-and-set: check if a register is 0 or not. If it is 0,
: set it to 1, and return 0
: 请问应该从何下手?谢谢

m***t
发帖数: 254
8
test and set is basic for thread synchronization. but yes, the underlying
implementation is hardware dependent. register variable is just a way of
telling compiler try to put this variable into register, compiler does not
guaranttee to honor such request.
j****r
发帖数: 28
9
Pseudo code:
int register;
int testandset(){
int ret = register;
register = 1;
return ret;
}
int function(){
while( testandset() );
...
}
Actually, testandset is a hardware instruction which is used to implement
synchronous primitives. So it must be atomic.

【在 e*******e 的大作中提到】
: 看到个题目:
: implement a test-and-set: check if a register is 0 or not. If it is 0,
: set it to 1, and return 0
: 请问应该从何下手?谢谢

c********x
发帖数: 84
10

asm
{
AX XOR 1;
}
that is no brainer.

【在 e*******e 的大作中提到】
: 看到个题目:
: implement a test-and-set: check if a register is 0 or not. If it is 0,
: set it to 1, and return 0
: 请问应该从何下手?谢谢

1 (共1页)
进入Programming版参与讨论
相关主题
multithread synchronizationQuestion on synchronization between processes
真屎的interview科普贴,fusion IO
一般thread-safe access哈,居然写完了作业
问个java String问题java里用synchronized包住block就可以保护多线程同步问题了,这就是c里面的mutex吧?
Volatile variables do not provide any atomicity (转载)做题了,做题了,看谁能搞清楚
有人知道AtomicInteger是如何实现的么C++ software engineer 3 years expectation
java的同步问题请教thread, semaphore, 问题。
C++怎么保证2行代码atomicRestaurant Reservation System...
相关话题的讨论汇总
话题: register话题: int话题: testandset话题: swap话题: set