`
happmaoo
  • 浏览: 4473929 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

pthread创建多线程

阅读更多

#include <iostream>

#include <pthread.h>

#include <string.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <dirent.h>

#include <errno.h>

#include <vector>

#include <algorithm>

#include <unistd.h>

#include "tinyxml/tinyxml.h"

#include <stdexcept>

#include <map>

#include <fcntl.h>

#include <stdlib.h>

#define MACXML "mac.xml"

using namespace std;

static bool usingMacXml = false;

pthread_mutex_t mutexMac = PTHREAD_MUTEX_INITIALIZER;

struct mac_data{

string mac;

string account;

string password;

string status;

};

/// run cmd command

int RunMsg(string cmd)

{

int rc = system(cmd.c_str());

if(!rc)

printf("excute %s, result is %d\n",cmd.c_str(), rc);

printf("Cmd: %s, result is %d\n",cmd.c_str(), rc);

return rc;

}

///prepare environment:copy all ci content except case;run cienv_setup.sh to setup environment;"

void *prepareEnv(void *threadarg)

{

struct mac_data *t;

t = (struct mac_data *) threadarg;

struct mac_data m;

m.mac = t->mac;

m.password = t->password;

m.account = t->account;

string mac = m.account+string("@") +m.mac;

string password = m.password;

string preMsg = "./execute "+mac+" "+ password+" \"if [ -d ~/dd];then\nrm ~/dd -rf;\nfi;\"";

RunMsg(preMsg);

preMsg ="./pscp "+password+" ~/dd "+mac+":~";

RunMsg(preMsg);

preMsg ="./execute "+mac+" "+ password+" \"cd ~/dd/shell;sh ./ddenv_setup.sh;source ~/.bash_profile;\"";

RunMsg(preMsg);

}

/// 多线程配置环境

void setupEnvInMultiThread(vector<mac_data> macs)

{

int tCount = macs.size();

pthread_t preThreads[tCount];

pthread_attr_t attr;

pthread_attr_init(&attr);

pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);

int rc;

for (unsigned int i = 0;i < macs.size();i++)

{

struct mac_data m = macs[i];

cout<<"machine "<<i <<" "<<m.mac<<endl;

rc = pthread_create(&preThreads[i],&attr,prepareEnv,(void *)&m);

system("sleep 3");

if(rc)

{

cout<<"pthread_create error code "<<rc<<endl;

}

}

pthread_attr_destroy(&attr);

void * status;

for(int j=0;j<tCount;j++)

{

rc = pthread_join(preThreads[j],&status);

if(rc)

{

cout<<"pthread_join error code "<<rc<<endl;

}

cout<<"Main: completed join with thread "<<j<<" having a status of "<<status<<endl;

}

cout<<"prepare environment completed."<<endl;

}

分享到:
评论

相关推荐

    Pthread多线程编程指南

    《Pthread多线程编程指南》是一本专为开发者准备的深入解析Pthread线程库的手册,尤其适合那些在UNIX、Linux等操作系统环境中进行多线程编程的工程师。Pthread,全称POSIX线程(Portable Operating System Interface...

    pthread多线程求pi,linux多线程pthread,C,C++

    在Linux环境下,`pthread`库提供了创建、管理和同步线程的功能,是实现多线程并行计算的理想选择。 pi2.c、pi3.c、pi1.c这三份源代码文件很可能是使用不同的算法和策略来实现多线程求π的。这些文件可能包含以下...

    Pthread创建一个线程

    在计算机编程中,多线程技术是实现并发...Pthread库提供了丰富的API,使得在UNIX和类UNIX环境下进行多线程编程变得相对简单。在APthread文件中,应该包含了示例代码,可以进一步学习和理解Pthread线程的创建和使用。

    linux pthread 多线程控制示例代码

    在Linux操作系统中,多线程编程是通过POSIX线程库(pthread)来实现的,这个库提供了一套丰富的API,使得开发者可以在单个进程中创建并管理多个执行线程。`pthread`是POSIX标准的一部分,它允许程序员创建轻量级进程...

    vs2013创建多线程教程

    VS2013 创建多线程教程 多线程编程是指在一个进程中同时运行多个线程,以提高程序的执行效率和响应速度。在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread 函数。 1. 创建线程结构体 ...

    QT中多线程

    本文将深入探讨QT中如何使用多线程,并以`pthread_create`为例介绍如何在C++中创建线程并传递参数。 首先,让我们了解QT中的线程类`QThread`。`QThread`是QT提供的一种线程抽象,它可以方便地管理和控制线程。在QT...

    pthread多线程c++动库下载

    pthread是POSIX线程库,它为C++编程提供了跨平台的多线程支持。在Windows环境下,由于标准C++库并不直接支持pthread,我们需要通过第三方库如pthreads-w32来实现POSIX线程功能。这个“pthread多线程c++动库下载”...

    pthread多线程求pi,linux多线程pthread,C,C++源码.zip

    在Linux中,pthread库是标准的多线程API,允许程序员创建和管理多个并发执行的线程。这些线程可以共享内存空间,协同完成复杂的任务,比如并行计算。 多线程求π的经典算法之一是蒙特卡洛方法。这种方法通过随机...

    pthread多线程编程

    通过理解和掌握上述`pthread`多线程编程的知识点,开发者可以在Linux环境中创建高效的多线程应用程序,有效地利用多核处理器的计算能力。然而,多线程编程也带来了复杂性和挑战,例如同步问题和资源管理,因此在实践...

    多线程矩阵乘法(java、win32、pthread三合一)

    在计算机科学中,多线程是一种程序设计技术,它允许应用程序同时执行多个任务或子任务。这个概念在处理大量计算任务时尤其有用,比如矩阵乘法。矩阵乘法是计算密集型操作,如果能利用多线程并行计算,可以显著提高...

    pthread多线程求pi,linux多线程pthread,C,C++源码.rar

    在本资源中,我们关注的是使用pthread库在Linux环境下用C和C++语言实现多线程计算圆周率π的过程。pthread是POSIX线程(Portable Operating System Interface for UNIX)的简称,是UNIX系统标准的一部分,用于支持...

    Pthread 多线程C++动态库+静态库+头文件

    标题中的"Pthread 多线程C++动态库+静态库+头文件"指的是Pthread库在C++环境下的多线程应用,适用于Windows平台,并且兼容Visual Studio及MFC(Microsoft Foundation Classes)框架。Pthread,全称为POSIX Threads,...

    pthread多线程计算pi

    pthread库是POSIX标准的一部分,提供了线程创建、同步和通信等功能,使得开发者可以在C或C++程序中方便地实现多线程。 “附结果比较表”可能是指程序运行不同线程数时的结果,通过对比不同线程数下的计算时间与精度...

    MFC创建多线程(工作者线程)demo

    本篇文章将深入探讨如何在MFC中创建多线程,特别是工作者线程,并且会针对`AfxBeginThread`和`BeginThread`两种方法进行比较。 首先,我们来看标题所提到的“MFC创建多线程(工作者线程)demo”。工作者线程通常...

    pthread测试工程

    这个测试工程可能还包含了多线程的创建和同步,例如使用`pthread_create()`创建新线程,`pthread_join()`等待线程结束,以及可能的条件变量(pthread_cond_t)配合使用,以实现更复杂的同步行为。 通过分析和运行这...

    Linux下多线程编程-Pthread与Semaphore的使用.doc

    在实际编程中,我们可以使用 pthread_create 函数创建多个线程,每个线程执行不同的任务。例如,我们可以创建一个线程用于读取数据,另一个线程用于处理数据。这样可以提高程序的效率和可扩展性。 Semaphore 是一种...

Global site tag (gtag.js) - Google Analytics