小编Sam*_*ina的帖子

多线程读取和处理大型文本文件

我有10个超过100Mb的列表,每个都有电子邮件,我想尽可能快地使用多线程处理它们而不将它们加载到内存中(比如逐行读取或读取小块)

我创建了一个函数,它根据正则表达式删除无效的函数,另一个函数根据每个域将它们组织到其他列表.

我设法使用一个线程:while(reader.Peek()!= -1),但它太长了.

如何在并行处理列表时使用多线程(大约100 - 200)和背景工作者或某些东西来使用表单?

我是csharp的新手:P

c# multithreading asynchronous backgroundworker large-files

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

pthreads无法正常工作

我有以下代码,简化后只显示相关部分.

我的问题是,在一台机器上它正确显示了线程号和所有其他值,但是当我在其他机器上运行它时,它显示了所有创建的线程的相同值.

我用-lpthread编译它,我甚至尝试静态编译它但结果相同.

为什么它在一台机器上正常工作而在另一台机器上却没有?这是编码错误还是我必须在编译时更改库?我被卡住了.谢谢!

    pthread_mutex_t word_list;
    struct words_list {
        char myword[20];
        struct words_list * next;
    };
    struct arg_struct {
        char *myword;
        int t;
    };
    char myword[20];
    struct words_list * first_word = NULL;
            //the loading data into struct code is missing from here
    struct words_list * curr_word = first_word;
    pthread_mutex_init(&word_list,NULL);        
    int ex = 0;
    while(curr_word != NULL)
    {
        struct arg_struct args;
        int ret = -1;
        for(i = 0 ; i < max_thread; i++)
        {
            pthread_mutex_lock(&word_list);
            strncpy(myword,curr_word->myword,sizeof(myword) - 1);
            pthread_mutex_unlock(&word_list);
            args.myword = …
Run Code Online (Sandbox Code Playgroud)

c multithreading struct pthreads

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

错误:二进制+ char*的操作数无效

可能重复:
C字符串连接

有以下代码:

        char *doencode(const unsigned char *input, int length)
        {
        //irrelevant code
        }

        char *fname, *lname;
        char *encoded, *name;

        name = fname + "|" + lname;
        encoded = doencode(name, 30);
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:二进制+的操作数无效

如何组合fname和| &lname?

c char

-1
推荐指数
1
解决办法
8289
查看次数