在一个线程中可以在创建线程或进程吗?

发布于 2022-10-01 01:40:49 字数 104 浏览 11 评论 0

我在一个线程中想一边执行程序一边监听server端有没有发信息过来,所以想在线程中再创建一个线程去执行监听的任务,当然接收到后也要处理.
不知道是否可行?
如果不行还有什么其他办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

染年凉城似染瑾 2022-10-08 01:40:49

我认为是可行的
随便做了个测试的小程序:
#include <pthread.h>;
#include <sys/types.h>;
#include <unistd.h>;
#include <iostream.h>;
#include <stdlib.h>;
#include <wait.h>;

void* anotherThreadFunc(void*j)
{
        int*k = (int*)j;
        for(int i=0;i<*k;i++)
        {
                cout<<"the cnt is:"<<i<<endl;
        }
        pthread_exit(NULL);
}

void* threadFunc(void* k)
{
        pthread_t thread;
        if(pthread_create(&thread,NULL,anotherThreadFunc,k)!=0) //error
        {
                cerr<<"create thread error"<<endl;
                exit(-1);
        }

        /* another codes to do sth. in this thread */
        /*
        ** waiting for the exit action of another thread
        */
        pthread_join(thread,NULL);
        cout<<"the second thread has finished"<<endl;
        pthread_exit(NULL);
}

int main()
{
        pthread_t thread;
        int i = 10;
        cout<<"in main process"<<endl;
        pthread_create(&thread,NULL,threadFunc,(void*)&i);
        pthread_join(thread,NULL);
        cout<<"the thread has finished"<<endl;
        return 0;
}

其运行输出为:
in main process
the cnt is:0
the cnt is:1
the cnt is:2
the cnt is:3
the cnt is:4
the cnt is:5
the cnt is:6
the cnt is:7
the cnt is:8
the cnt is:9
the second thread has finished
the thread has finished

如果要在各个线程进行通讯的话,可以在进程地址空间里划分一些空间出来存放
共享数据就可以了。
以上是个人之见,刚学不久。

近箐 2022-10-08 01:40:49

非常感谢!

夜司空 2022-10-08 01:40:49

用JAVA很简单!

笨死的猪 2022-10-08 01:40:49

可是我用的是C呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文