linux 系统下如何配置多线程 pthread库,基于codeblock IDE

由于近期要解决多线程访问同一内存,造成不当竞争的问题,在codeblock上面要实现一个简单的测试程序,使用常见教程为例:

#include
#include
#include
#include
#include
#include

using namespace std;

int ticket_sum=20;
pthread_mutex_t mutex_x=PTHREAD_MUTEX_INITIALIZER;//static init mutex

void *sell_ticket(void *arg)
{
    for(int i=0; i<20; i++)
    {
        pthread_mutex_lock(&mutex_x);//atomic opreation through mutex lock
        if(ticket_sum>0)
        {
            sleep(1);
            cout<<"sell the "<<20-ticket_sum+1<<"th"<             ticket_sum--;
        }
        pthread_mutex_unlock(&mutex_x);
    }
    return 0;
}

int main()
{
    int flag;
    pthread_t tids[4];

    for(int i=0; i<4; i++)
    {
        flag=pthread_create(&tids[i],NULL,&sell_ticket,NULL);
        if(flag)
        {
            cout<<"pthread create error ,flag="<             return flag;
        }
    }

    sleep(20);
    void *ans;
    for(int i=0; i<4; i++)
    {
        flag=pthread_join(tids[i],&ans);
        if(flag)
        {
            cout<<"tid="<

你可能感兴趣的:(多线程,linux)