Linux中的C线程?

jah*_*max 7 c linux multithreading

有人在c中有一个简单的线程示例吗?

我想构建一个小型控制台应用程序,它将逐行读取txt文件文件,然后使用线程处理整个txt.我该怎么做?将txt拆分为X,其中X = N的线程,是我想到的第一件事,有更好的方法吗?

Zif*_*ong 8

搜索pthreads.我也是新手.这是一个总和从1到1000000000(也是我的第一个工作pthread程序)的代码片段.

#include <stdio.h>
#include <pthread.h>

struct arg {
    int a, b;
    int *rst;
};
typedef struct arg arg;

void* sum(void *);

int main()
{
    pthread_t sum1, sum2;
    int s1, s2;
    pthread_create(&sum1, NULL, sum, &(arg){1, 500000000, &s1});
    pthread_create(&sum2, NULL, sum, &(arg){500000001, 1000000000, &s2});   
    pthread_join(sum1, NULL);
    pthread_join(sum2, NULL);
    printf("%d\n", s1 + s2);
}

void* sum(void *ptr)
{
    int i, temp = 0;
    arg *x = ptr;

    for(i = x->a; i <= x->b; ++i)
        temp += i;
    *(x->rst) = temp;   
}
Run Code Online (Sandbox Code Playgroud)

  • `rst`不需要是`volatile` qualfied指针,代码很好.编译器无法删除"*(x-> rst)"的存储,因为它无法确定其外部是否可见; 并且`pthread_join`意味着障碍. (2认同)

Inc*_*ito 8

最好的选择IMHO是使用POSIX线程.你可以在这里看到更多细节.

另请查看詹姆斯回答中的链接.


Jam*_*oth 7

搜索POSIX线程,也称为pthreads.教程在这里