c*7
2 楼
坐地铁,身边一个男孩提醒我:“你鞋带开了。”由于车厢很挤,鞋带也不长,我就说
:“我一会儿就系上。”车开了两站,期间男孩一直时不时侧头看我。到了第三站,男
孩终于忍不住对我说:“你能系上么?看着好难受啊……”
:“我一会儿就系上。”车开了两站,期间男孩一直时不时侧头看我。到了第三站,男
孩终于忍不住对我说:“你能系上么?看着好难受啊……”
M*5
4 楼
这道题就是考你在实现push和pop的时候要用个thread_lock吧,应该,好像不需要很多多
线程的概念。。。不知道还有没有人有其他意见。。。
线程的概念。。。不知道还有没有人有其他意见。。。
w*x
6 楼
该不是要实现lock free的hash map吧
c*a
7 楼
是不是类似这样,不太懂系统
private Lock lock = new Lock();
public int delete(int x){
lock.lock();
int val = super.delete(x);
lock.unlock();
return val;
}
The lock() method locks the Lock instance so that all threads calling lock()
are blocked until unlock() is executed.
private Lock lock = new Lock();
public int delete(int x){
lock.lock();
int val = super.delete(x);
lock.unlock();
return val;
}
The lock() method locks the Lock instance so that all threads calling lock()
are blocked until unlock() is executed.
j*y
9 楼
对 slot 加锁怎么做阿? 我下面的code 感觉是对整个 hash table加锁了。
请指点,多谢 :)
class hashmap
{
int m;
pair table[m];
pthread_mutex_t lock;
int hashfunc(string);
public:
void insert(pair v)
{
pthread_mutex_lock(&lock);
int slot = hashfunc(v.first);
table[slot] = v;
pthread_mutex_unlock(&lock);
}
};
【在 h****n 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 其实就是对query,insert,delete操作加锁即可
: 注意不要对整个hashtable加锁,这样子并行化性能低下
: 要对每一次被indexed的slot加锁
请指点,多谢 :)
class hashmap
{
int m;
pair
pthread_mutex_t lock;
int hashfunc(string);
public:
void insert(pair
{
pthread_mutex_lock(&lock);
int slot = hashfunc(v.first);
table[slot] = v;
pthread_mutex_unlock(&lock);
}
};
【在 h****n 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 其实就是对query,insert,delete操作加锁即可
: 注意不要对整个hashtable加锁,这样子并行化性能低下
: 要对每一次被indexed的slot加锁
h*n
10 楼
题目应该是要你自己设计一个hashmap而不使用stl里的hashmap
如果可以自己设计hashmap,简单的做法是申请一个mutex数组,数组的大小和
hashtable slot数目一致,一一对应
如果对并行性能要求不高那就另当别论了
【在 j*****y 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 对 slot 加锁怎么做阿? 我下面的code 感觉是对整个 hash table加锁了。
: 请指点,多谢 :)
: class hashmap
: {
: int m;
: pair table[m];
: pthread_mutex_t lock;
: int hashfunc(string);
: public:
: void insert(pair v)
如果可以自己设计hashmap,简单的做法是申请一个mutex数组,数组的大小和
hashtable slot数目一致,一一对应
如果对并行性能要求不高那就另当别论了
【在 j*****y 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 对 slot 加锁怎么做阿? 我下面的code 感觉是对整个 hash table加锁了。
: 请指点,多谢 :)
: class hashmap
: {
: int m;
: pair
: pthread_mutex_t lock;
: int hashfunc(string);
: public:
: void insert(pair
h*n
14 楼
j*y
19 楼
谢谢。 刚才看了 那个 consumer/producer 的 wiki, 对于 queue而已就是要对于
queue的size用 semaphore, 是吧?
【在 h****n 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: queue和这个问题不太一样,hash里面的slot是independent所以才能这么做,queue要
: 对整个queue加锁的,所能优化的地方有两点,第一个是尽量降低临界区也就是锁的时
: 间,第二个就是要采用semaphore同步机制来避免queue为空的时候pop操作busy loop,
: queue满的时候push操作busy loop。具体可参考semaphore如何解决经典的生产者消费
: 者问题
queue的size用 semaphore, 是吧?
【在 h****n 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: queue和这个问题不太一样,hash里面的slot是independent所以才能这么做,queue要
: 对整个queue加锁的,所能优化的地方有两点,第一个是尽量降低临界区也就是锁的时
: 间,第二个就是要采用semaphore同步机制来避免queue为空的时候pop操作busy loop,
: queue满的时候push操作busy loop。具体可参考semaphore如何解决经典的生产者消费
: 者问题
h*n
20 楼
其实两个binary semaphore就足够了,一个sem_full另外一个是sem_empty 初值都为0
pop操作只有在检测到queue为空的时候才去wait(sem_full),当push一个新元素的时候
都会去notify一个等待的线程
push操作检测queue为满的时候做类似操作
如果光用mutex的话,当queue为空的话,做pop操作的线程即使拿到mutex每次都检测到
queue为空,这样子就做了很多无谓的工作,还占用了时间片
而用同步机制的话,这种情况下会被scheduler直接放进pending list里面直到被
notify避免了cpu的浪费
【在 j*****y 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 谢谢。 刚才看了 那个 consumer/producer 的 wiki, 对于 queue而已就是要对于
: queue的size用 semaphore, 是吧?
pop操作只有在检测到queue为空的时候才去wait(sem_full),当push一个新元素的时候
都会去notify一个等待的线程
push操作检测queue为满的时候做类似操作
如果光用mutex的话,当queue为空的话,做pop操作的线程即使拿到mutex每次都检测到
queue为空,这样子就做了很多无谓的工作,还占用了时间片
而用同步机制的话,这种情况下会被scheduler直接放进pending list里面直到被
notify避免了cpu的浪费
【在 j*****y 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 谢谢。 刚才看了 那个 consumer/producer 的 wiki, 对于 queue而已就是要对于
: queue的size用 semaphore, 是吧?
相关阅读
Re: 奔最近买的白菜 @_@ (转载)惠普的股票是不是也要跌了?关于supervita的版五职务的表决我总觉得考拉长得像巴依老爷Re: 国女想外F都是内心贪婪 (转载)陆家嘴厨房三件套在高速上,车的挡风玻璃被人用酒瓶砸碎,九死一生求助 (转载)churchance该引咎辞职,换milstein当版主,同意的RE知道这个说明你已经老了Re: 需要运一个60" 电视 (转载)nice shot创意漫天飞舞的鲨鱼们说下你到这个逼逼爱死碰上的第一个大坑吧三星村 Samsung village牛逼的输入法Re: 百米十秒相当于智商多少? (转载)平权的伟大胜利:加州男生获得进女厕所的权利? (转载)主持人是男的还是女的?美国小学5年纪学生