/*
* m.cpp
*
* Created on: 2015年1月23日
* Author: maygolf
*/
#include <pthread.h>
#include <iostream>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
int i = 0;
pthread_mutex_t mutex ;//= PTHREAD_MUTEX_INITIALIZER;
long long current_time()
{
struct timeval t_start;
//get start time
gettimeofday(&t_start, 0);
long long t = ((long long) t_start.tv_sec) * 1000 + (long long) t_start.tv_usec / 1000;
return t;
}
void* doSomeThing(void* cookie)
{
while (1)
{
if (pthread_mutex_lock(&mutex) == 0)
{
cout << "name:" << pthread_self() << " time:" << current_time() << " i:" << i << endl;
i++;
pthread_mutex_unlock(&mutex);
}
// cout << "name:" << pthread_self() << " time:" << current_time() << " sleep" << endl;
// sleep(1);
}
return (void*) 1;
}
int main(int argc, char **argv)
{
pthread_mutex_init(&mutex,NULL);
pthread_t thread, thread1,thread2;
cout << "name:" << pthread_self() << " time:" << current_time() << endl;
pthread_create(&thread, NULL, doSomeThing, &thread);
pthread_create(&thread1, NULL, doSomeThing, &thread1);
pthread_create(&thread1, NULL, doSomeThing, &thread2);
// cout << "name:" << pthread_self() << " time:" << current_time() << endl;
// int i = 0;
// for (i = 0; i < 10; i++)
// {
// sleep(1);
//
// }
// cout << pthread_cancel(thread) << endl;
pthread_join(thread, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
}