标签: read-write

R中的文件锁

简短的版本

我将如何阻止对文件的访问,直到涉及该文件的读写过程的特定函数返回?


用例

我经常想创建某种中央注册表,并且可能有多个R进程参与读取和写入该注册表(以"穷人的并行化"设置为例,其中不同的进程彼此独立地运行,除非尊重到注册表访问).

喜欢依赖任何DBMS,例如SQLite的,PostgreSQL的,MongoDB的等早在devel的过程.即使我后来可能使用DBMS,基于文件系统的解决方案仍可能是一个方便的后备选项.因此,我很好奇我如何通过基本R功能实现它(充其量).

我知道,与DBMS解决方案相比,在并行设置中对文件系统进行大量读写操作并不是非常有效.

我在MS Windows 8.1(64位)上运行

我希望对此有更深入的了解

当两个或多个R进程同时尝试写入或读取文件时,究竟发生了什么?操作系统是否自动找出"访问顺序"并执行"第二次"进程等待或是否会触发错误,因为第一个进程可能会阻止文件访问?我怎么能阻止第二个进程返回错误,而是"等待"直到轮到他?

进程的共享工作空间

除了rredis包之外:MS Windows上还有其他共享内存选项吗?

插图

注册表文件的路径:

path_registry <- file.path(tempdir(), "registry.rdata")
Run Code Online (Sandbox Code Playgroud)

注册事件的示例函数:

registerEvent <- function(
    id=gsub("-| |:", "", Sys.time()), 
    values, 
    path_registry
) {
    if (!file.exists(path_registry)) {
        registry <- new.env()
        save(registry, file=path_registry)
    } else {
        load(path_registry)
    }

    message("Simulated additional runtime between reading and writing (5 seconds)")
    Sys.sleep(5)

    if (!exists(id, envir=registry, inherits=FALSE)) {
        assign(id, values, registry)
        save(registry, file=path_registry)
        message(sprintf("Registering with ID %s", id)) …
Run Code Online (Sandbox Code Playgroud)

filesystems locking r read-write

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

将读/写拆分与PHP mysqlnd_ms一起使用的问题

我正在尝试设置PHP mysqlnd_ms扩展,我遇到了一些问题.到目前为止,我所做的就是:

- 启用时从源代码编译PHPmysqlnd

- 安装mysqlnd_ms(如果我运行,pecl info mysqlnd_ms我会获得有关mysqlnd_ms插件的信息):

$ sudo pecl install mysqlnd_ms
Run Code Online (Sandbox Code Playgroud)

- 修改PHP.ini(并在之后重新启动):

mysqlnd_ms.enable=1
mysqlnd_ms.disable_rw_split=0 ; for good measure
mysqlnd_ms.config_file=mysqlnd_ms_config.ini
Run Code Online (Sandbox Code Playgroud)

- mysqlnd_ms_config.ini使用以下内容创建(在官方文档中作为示例提供)

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "slave": {
            "slave_0": {
                "host": "localhost",
                "socket": "\/var\/run\/mysqld\/mysqld.sock"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文件:

该插件在配置的MySQL从服务器上执行只读语句,在MySQL主服务器上执行所有其他查询.如果语句以SELECT,SQL提示/ ms = slave/开头,或者如果选择了从属服务器运行上一个查询并且查询以SQL提示/ ms = last_used/开头,则语句被认为是只读的.在所有其他情况下,查询将被发送到MySQL复制主服务器

所以在这一点上我期待我的SELECT语句被发送到slave和其他语句(例如UPDATE …

php mysql pdo split read-write

5
推荐指数
1
解决办法
2966
查看次数

Android文件夹的读/写权限

我正在做一个新的Android应用程序.我想在"Android"文件夹中创建一个文件夹,该文件夹在sdcard中可用.在此之前,我想检查该文件夹是否具有读/写权限.我怎么能得到它?任何人都可以帮助我这样做.

android read-write android-sdcard

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

如何使用 Python 读/写 Fortran 名单?

我想知道如何在 Python 中轻松读取和写入 Fortran 名称列表文件中的值。

python fortran config read-write

5
推荐指数
2
解决办法
3329
查看次数

将整数数组读写到共享内存中

以下是我的共享内存的读写器代码。

阅读代码-

int main(){
int shmid;
int *array;
int count = 5;
int i = 0;
key_t key = 12345;

shmid = shmget(key, count*sizeof(int), IPC_EXCL);

array = shmat(shmid, 0, SHM_RDONLY);

for(i=0; i<5; i++)
    {
        printf("\n%d---\n", array[i] );
    }

    printf("\nRead to memory succesful--\n");

    shmdt((void *) array);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编写代码-

int main()
{
int shmid;
int *array;
int count = 5;
int i = 0;
int SizeMem;
key_t key = 12345;

SizeMem = sizeof(*array)*count;

shmid = shmget(key, count*sizeof(int), IPC_CREAT);

array = …
Run Code Online (Sandbox Code Playgroud)

c linux gcc read-write shared-memory

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

Node JS mysql本机驱动程序 - 负载平衡拆分读/写查询

我们有一个现有的高流量PHP Web应用程序,它使用MySQL Native驱动程序的负载平衡工具来分割主数据库和从属数据库之间的读写查询.

我正在将此应用程序的API部分迁移到NodeJS,目前我正在使用MySQL驱动程序.

我的问题:有没有办法在NodeJS中拆分主数据库和从数据库之间的读写查询?我已经找了一个NodeJS版本的MySQL Native驱动程序但是还没有运气.

提前感谢您提供的任何帮助:)

mysql load-balancing read-write node.js

5
推荐指数
0
解决办法
353
查看次数

Delphi属性读/写

在delphi类中声明属性时,是否可能有不同类型的结果?

例:

property month: string read monthGet(字符串) write monthSet(整数);

在这个例子中,我希望,在属性月份,当我:READ,我得到一个字符串; SET,我设置一个整数;

delphi integer properties read-write

5
推荐指数
2
解决办法
8761
查看次数

fopen和open之间有什么关系?

我正在为一个类的项目工作,我们得到一个包含以下代码的.c文件:

int fd = -1;
if (fd < 0)
{
  fd = open ("my_dev", O_RDWR);
  if (fd < 0)
  {
    perror ("open");
    return -1;
  }
...
Run Code Online (Sandbox Code Playgroud)

所以我理解它正在尝试打开一个具有读/写权限的文件"my_dev",然后在成功时返回文件描述符或者在失败时返回负值,但我不明白为什么它给了我"权限被拒绝"始终如一.我试着使用这段代码:

int des = open("my_dev", O_CREAT | O_RDWR, 0777);
...
close(des)
Run Code Online (Sandbox Code Playgroud)

打开/创建文件(这是在另一个块之前调用),但这不起作用,但如果我只是使用它:

FILE* file = fopen("my_dev","w+");
fprintf(file,str);
fclose(file);
Run Code Online (Sandbox Code Playgroud)

我可以写入文件,这意味着我有写权限.现在通常情况下,我只会使用fopen和fprintf来处理所有事情,但对于这个项目,我们必须使用教师的.c文件,它将尝试使用

 open()
Run Code Online (Sandbox Code Playgroud)

这将导致"权限被拒绝"错误,这反过来会搞砸我的代码.

我想我的问题是fopen和open是如何相互关联的?每个人似乎都能够背诵open是一个系统调用,而fopen是一个标准的lib函数,但我似乎无法找到一个明确的答案,我可以用fopen()创建一个可以通过open()打开的文件一个"权限被拒绝"的错误,或者我如何创建一个open()文件然后我可以写入,关闭并再次打开open().

简而言之,如何在C中创建一个我可以写入的文件,稍后用open(O_RDWR)打开?

对不起,如果这是一个小小的,我非常累.

PS:应该注意的是我正在大学计算机上编译和运行,因此权限可能是"怪异的"但是应该注意的是,如果我使用终端命令"dd"创建文件,open()将起作用,此外,我显然有一些写权限,因为我确实可以使用fopen和fprintf写入该文件

c permissions fopen file-descriptor read-write

5
推荐指数
1
解决办法
835
查看次数

如何计算Lua中文本文件中的单词数量

我想问一下创建一个可以计算.txt文件中单词数量的Lua程序的步骤是什么?我只熟悉如何计算字符而不是字符串.

string lua count cpu-word read-write

4
推荐指数
1
解决办法
1360
查看次数

Swift - 向/从文件读/写数组数组

是我的文件.

我该怎么写这个数组:

var listOfTasks = [["Hi", "Hello", "12:00"],["Hey there", "What's up?", "3:17"]]

.txt文件(file.txt)?我知道还有其他问题,但它们是其他语言(不是Swift).我希望它可以在真正的iPhone上运行.如有必要,我很乐意提供更多信息.我是Swift的新手,请原谅我的问题,如果它看起来太简单了.注意:我特别询问有关包含数组的数组.

提前致谢!

arrays read-write swift

4
推荐指数
1
解决办法
7115
查看次数