C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c-C线程创建在20行程序中.为什么不起作用?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图运行一个简短的程序,在一个for循环中创建三个线程,每个线程都将“内部”写入屏幕. Cygwin在XP和Vista上运行在不同的机器上.这是当前的代码.
#include <iostream>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>
using namespace std;
void* prinTinside(void* arg);

int main()
{
    pthread_t threads[3];
    for(int i = 0; i < 3; i++)
    {
        pthread_create(&threads[i],prinTinside,0);
    }
    return 0;
}
void* prinTinside(void* arg)
{
    cout << "inside";
        return 0;
}

它不行.如果我在for循环的内部添加一个cout,它似乎放慢了工作.

for(int i = 0; i < 3; i++)
{
    cout << "";
    pthread_create(&threads[i],0);
}

有什么建议,为什么是这样的情况?

编辑:

在回路之后,我收到了添加一个连接的响应

int main()
 {
     pthread_t threads[3];
     for(int i = 0; i < 3; i++)
    {
        pthread_create(&threads[i],0);
    }
     for(int i = 0; i < 3; i++)
    {
        void* result;
        pthread_join(threads[i],&result);
    }
}
 void* prinTinside(void* arg)
 {
    cout << "inside";
    return 0;
}

但还是不行,加盟做错了吗?

固定

解决方法

您需要加入或主线程将退出
for(int i = 0; i < 3; i++)
{
    pthread_create(&threads[i],0);
}
/* Join here. */

执行I / O通常是硬而缓慢的.这给了其他线程足够的cpu时间来运行.

记住,当使用多个线程时,如果一个呼叫退出,它们都会死亡.

编辑

输出通常由标准库缓冲.它在某些情况下被刷新,但有时您必须手动执行.所以即使线程运行并产生输出,除非你刷新它,你将看不到它.

大佬总结

以上是大佬教程为你收集整理的c-C线程创建在20行程序中.为什么不起作用?全部内容,希望文章能够帮你解决c-C线程创建在20行程序中.为什么不起作用?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。