Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 双线程打印字符_C_Pthreads - Fatal编程技术网

C 双线程打印字符

C 双线程打印字符,c,pthreads,C,Pthreads,我得写一个程序 “激活两个线程。第一个线程必须写char'a'30000 次第二个“b”25000次 我写了这个程序,但我不知道这是一个好结果。我希望当我使用pthread\u join(p,NULL)时,先看到30000次a然后看到b。我的程序随机写a和b,这是好还是不好 #include<stdio.h> #include<string.h> #include<pthread.h> #include<stdlib.h> #include<

我得写一个程序

“激活两个线程。第一个线程必须写char'a'30000 次第二个“b”25000次

我写了这个程序,但我不知道这是一个好结果。我希望当我使用
pthread\u join(p,NULL)
时,先看到30000次a然后看到b。我的程序随机写a和b,这是好还是不好

#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>

pthread_t f,s;
void* a(void *arg)
{
    int j;
    for(j=0;j<30000;j++) printf("a\n");
    return NULL;
}
void* b(void *arg)
{
    int u;
    for(u=0;u<25000;u++) printf("b\n");
    return NULL;
}


int main(void)
{
    int i = 0;
    int err;

        err = pthread_create(&f, NULL, &a, NULL);
        if (err != 0)
            printf("\ncan't create thread :[%s]", strerror(err));
        else
            printf("\n Thread created successfully\n");

        err = pthread_create(&s, NULL, &b, NULL);
        if (err != 0)
            printf("\ncan't create thread :[%s]", strerror(err));
        else
            printf("\n Thread created successfully\n");


    pthread_join(f, NULL);
    sleep(5);
    return 0;
}
#包括
#包括
#包括
#包括
#包括
pthread_t f,s;
void*a(void*arg)
{
int j;

对于(j=0;jI不知道“好”或“坏”,但这正是我所期望的。这就是那些没有真正实现任何目标的人为示例的问题。从您发布的内容来看,您似乎已经为这个问题做了足够的工作。使用线程的全部目的是让线程同时运行。因为大多数现代系统都有多线程即使在单核机器上,在执行一个线程的所有代码之前,执行另一个线程的所有代码也会令人惊讶,特别是因为要写入的字符数足够大,足以触发系统调用(换行可能也会触发刷新)。您可能也应该
pthread_join(s,NULL);