小编Sid*_*kar的帖子

并发通用数据结构,没有死锁或资源不足

我最近问了很多关于的问题TVar,我仍然对活锁感到担忧.

所以我想到了这个结构:

  1. 每个事务都获得唯一的优先级(可能按创建顺序分配).
  2. 事务尝试对它们访问的数据进行读/写锁定.当然,同时读取是可以的,但是一个写入锁定排除了所有其他(读取和写入).
  3. 假设事务A具有比事务B更高的优先级.如果A持有锁,则B等待,但如果B持有锁并且A想要它,则B从锁启动,A获得它,并且事务B重新启动(如同TVar).然而,B保持其当前重试的优先级.
  4. 当释放锁并且有等待事务时,它将进入优先级最高的事务,其余事务继续等待.

我相信这个系统可以防止死锁,但也可以防止饥饿(不像TVar).我想知道是否有人实施了这样的系统,因为它看起来相当明显,我不想重新发明轮子.

当然,可以容易地扩展这种方法以允许用户指定优先级.

优先级可能是一对(user_supplied_prio, auto_increment),与user_supplied_prio采取优先次序,但相同优先级的任务以FIFO的顺序解决.

评论/解决方案:

实际上,当我想到它时,我所描述的已经存在于Haskell中,只需使用一个IORef包裹所有数据,并且仅使用atomicModifyIORef.这atomicModifyIORef将确保按顺序应用交易.但是,有人可能认为这意味着数据结构是顺序的(即有效地限于一个线程),但由于懒惰,它实际上是并行的.

要解释这一点,请考虑一个昂贵的功能f.我们将Data.Map使用键"foo" 将其应用于数据.

这取代(foo -> x)(foo -> future(f x)).这个帖子应该继续解决(f x)实际问题,但在此期间我们可以将g应用于"bar".由于将g应用于"bar"不需要"foo"的结果,我们可以同时解决这个问题.

没有死锁,没有饥饿,最终将处理所有交易(大致按照收到的顺序).

concurrency haskell deadlock stm

39
推荐指数
1
解决办法
1144
查看次数

如何覆盖Google Glass的相机按钮

对于谷歌玻璃应用,我需要重写的快捷相机的按钮谷歌眼镜.

让我解释一下这个场景:Google glass有快捷键相机按钮,有助于更快地捕捉图像.捕获可以通过电子邮件和其他选项共享的图像.对于应用程序运行时的项目要求,我需要使用户无法访问相机按钮,以便用户无法捕获图像并将图像发送给其他任何人.

如何在应用程序内部实现此选项?

android google-glass google-gdk

8
推荐指数
1
解决办法
454
查看次数

将MySql表数据选择为数组

我尝试从mysql中捕获数据,将它们全部放入数组中.假设:

    users table
    -----------------------
    id| name | code 
    ----------------------
    1| gorge | 2132
    2| flix | ksd02
    3| jasmen | skaod2

    $sql = mysql_query("select id, name, code from users");
    $userinfo = array()
    while($row_user = mysql_fetch_array($sql)){
    $userinfo = $row_user[name] 
    }
-------------------------
foreach($userinfo as $usinfo){
echo $usinfo."<br/>";
}
Run Code Online (Sandbox Code Playgroud)

这是我只能插入用户名但不能在userinfo数组中插入代码和id的问题,请帮我在同一个数组中插入所有数据.

[PS]请不要面向对象.

php mysql arrays metadata

6
推荐指数
2
解决办法
8万
查看次数

TWO_SWIPE_DOWN TAP无法捕获Google Glass GDK(XE16)

在Google Glass XE16中,GestureDetector可以检测多种手势,如LONG_PRESS,SWIPE_DOWN,THREE_LONG_PRESS,TWO_SWIPE_DOWN,TWO_TAP和其他一些手势.

在玻璃中TWO_SWIPE_DOWN就像取消所有内容并转到黑屏的快捷方式选项.在黑色屏幕之后它出现"ok glass".

但我需要覆盖TWO_SWIPE_DOWN TAP,以便用户不能以这种方式离开应用程序.我想在点击TWO_SWIPE_DOWN时显示用户特定的消息.

我的代码遵循以下GDK Touch Gestures:

    gestureDetector.setBaseListener(new GestureDetector.BaseListener() {
        @Override
        public boolean onGesture(Gesture gesture) {
            if (gesture == Gesture.TAP) {
                return true;
            } else if (gesture == Gesture.TWO_TAP) {
                return true;
            } else if (gesture == Gesture.SWIPE_RIGHT) {
                return true;
            } else if (gesture == Gesture.SWIPE_LEFT) {
                return true;
            } else if (gesture == Gesture.TWO_SWIPE_DOWN) {
                Log.i("Checking the TAPPING of TWO_SWIPE_DOWN", "Its working fine.");
                return true;
            }
            return …
Run Code Online (Sandbox Code Playgroud)

android gesture-recognition gestures google-glass android-4.4-kitkat

6
推荐指数
1
解决办法
383
查看次数

如何在Windows操作系统中配置或安装GEARMAN?

我想在项目中实现"GEARMAN",但我不知道如何在Windows操作系统中安装或配置"GEARMAN".任何人都可以提供我可以与"GEARMAN"合作的链接吗?

windows gearman python-gearman

3
推荐指数
1
解决办法
7505
查看次数

Android:资源字符串自动生成

我是Android的新手.当我在图形布局中添加按钮/视图时,它会以这种方式添加标签文本 - android:text ="Button".为什么它不添加"android:text ="@ string/my_label"并在string.xml文件中添加字符串资源.不能在eclipse中自动完成吗?

eclipse android eclipse-plugin android-layout

3
推荐指数
3
解决办法
1万
查看次数