我有10个超过100Mb的列表,每个都有电子邮件,我想尽可能快地使用多线程处理它们而不将它们加载到内存中(比如逐行读取或读取小块)
我创建了一个函数,它根据正则表达式删除无效的函数,另一个函数根据每个域将它们组织到其他列表.
我设法使用一个线程:while(reader.Peek()!= -1),但它太长了.
如何在并行处理列表时使用多线程(大约100 - 200)和背景工作者或某些东西来使用表单?
我是csharp的新手:P
我有以下代码,简化后只显示相关部分.
我的问题是,在一台机器上它正确显示了线程号和所有其他值,但是当我在其他机器上运行它时,它显示了所有创建的线程的相同值.
我用-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字符串连接
有以下代码:
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?