c语言 多线程的简单实现 线程锁

来源:互联网 发布:十大网络电视机排行榜 编辑:程序博客网 时间:2024/04/29 18:24
#include <stdio.h>  
#include <math.h>  
#include <pthread.h>  
#include <stdlib.h>  
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
// #include <windows.h>

extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
};
#define THREADMAX 10

pthread_t thread[THREADMAX]; //创建线程函数返回类型
pthread_mutex_t mut; //互斥锁类型
static int number=0;

void *thread1(void* a) //线程函数
{
    pthread_mutex_lock(&mut); //加锁,用于对共享变量操作
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);
    if(luaL_loadfile(L, "*****.lua") || lua_pcall(L, 0,0,0)){
        printf("error %s\n", lua_tostring(L,-1));
    }
    number++;
    lua_getglobal(L,"****");
    lua_pushnumber(L, number);   
    lua_pcall(L,1,0,0);
    lua_pop(L, 1);
    lua_close(L);

    pthread_mutex_unlock(&mut); //解锁

}


void thread_create(void)
{
    /*创建线程*/
    int i=0;
    for (i=0;i<THREADMAX;i++){
        pthread_create(&thread[i], NULL, thread1, NULL);
    }
}

void thread_wait(void)
{
    int i=0;
    for (i=0;i<THREADMAX ;i++){
        pthread_join(thread[i],NULL);
    }
}

int main()
{
    /*用默认属性初始化互斥锁*/
    pthread_mutex_init(&mut,NULL);
    thread_create();
    thread_wait();
    return 0;
}
1 0
原创粉丝点击