标签归档:同步

RSS feed of 同步

最后更新于 .

最近下定决心,打算好好整理下这么多年的照片和视频,主要目标有两个:

  1. 数据同步
    定期同步手机上的照片和视频到电脑。
  2. 数据备份
    对全量数据做好备份。

一、数据同步

先说一下我的设备情况:

  • 手机:iPhone
  • 电脑:Windows两台,Mac一台。

之前我用过几种方式来完成数据同步:

  1. 在Windows电脑上,连接iPhone,通过复制粘贴的方式,完成同步。

    • 优点
      • 基于文件系统,操作简单。
    • 缺点
      • 不稳定,经常报错。
      • 目录名称缺少语意(如A100),无法按照日期进行浏览。
      • 不支持增量同步。
  2. 在Mac电脑上,连接iPhone,打开"照片"应用,导入新照片。

    • 优点
      • 支持增量同步。
      • 稳定。
    • 缺点
      • 存储形式封闭
        只能通过"照片"应用进行查看,如果想在文件系统中直接查看,需要先进行导出。
      • 备份成本高
        只能全量备份。

而经过这些失败的尝试后,我开始寻求其他的方案。

最好能够实现:手机端直接复制到PC的共享目录中。

有以下几个方案:

  1. 通过"文件"应用
    在手机的"文件"应用中,建立对PC共享目录的映射。
    之后在手机的"照片"应用中,选择要同步的文件,复制粘贴到共享目录的对应位置即可 ...

最后更新于 .

互斥锁

尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。

1. 创建和销毁

有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下:

pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;

在LinuxThreads实现中,pthread_mutex_t是一个结构,而PTHREAD_MUTEX_INITIALIZER则是一个结构常量。 动态方式是采用pthread_mutex_init()函数来初始化互斥锁,API定义如下:

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr)

其中mutexattr用于指定互斥锁属性,如果为NULL则使用缺省属性。 pthread_mutex_destroy()用于注销一个互斥锁,API定义如下:

int pthread_mutex_destroy(pthread_mutex_t *mutex)

销毁一个互斥锁即意味着释放它所占用的资源,且要求锁当前处于开放状态。由于在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。

2. 互斥锁属性

互斥锁的属性在创建锁的时候指定,在LinuxThreads实现中仅有一个锁类型属性,不同的锁类型在试图对一个已经被锁定的互斥锁加锁时表现不同。当前(glibc2.2.3,linuxthreads0 ...