/*
*==============================================================================
* Filename : tsd.c
* Description :
* Author : RollStone (rs), jealdean@outlook.com
* Created : 10/14/2014 15:14
* Copyright : 2007-2014 RollStone. All Rights Reserved.
* Last_Change : 2014-10-14 15:53:05
* Version : 1.0
*==============================================================================
*/
#include <malloc.h>
#include <pthread.h>
#include <stdio.h>
/* The key used to associate a log file pointer with each thread. */
static pthread_key_t thread_log_key;
void write_to_thread_log (const char* message);/* Write MESSAGE to the log file for the current thread. */
void close_thread_log (void* thread_log);/* Close the log file pointer THREAD_LOG. */
void* thread_function (void* args);
int main ()
{
int i;
pthread_t threads[5];
/* Create a key to associate thread log file pointers in
thread-specific data. Use close_thread_log to clean up the file
pointers. */
pthread_key_create (&thread_log_key, close_thread_log);
/* Create threads to do the work. */
for (i = 0; i < 5; ++i)
{
pthread_create (&(threads[i]), NULL, thread_function, NULL);
}
/* Wait for all threads to finish. */
for (i = 0; i < 5; ++i)
{
pthread_join (threads[i], NULL);
}
return 0;
}
void write_to_thread_log (const char* message)
{
FILE* thread_log = (FILE*) pthread_getspecific (thread_log_key);
fprintf (thread_log, "%s\n", message);
}
void close_thread_log (void* thread_log)
{
fclose ((FILE*) thread_log);
}
void* thread_function (void* args)
{
char thread_log_filename[20];
char wbuf[64]={0};
FILE* thread_log;
/* Generate the filename for this thread’s log file. */
int sf=(int)pthread_self();
sprintf (thread_log_filename, "thread%d.log", sf);
sprintf (wbuf, "Thread %d starting", sf);
/* Open the log file. */
thread_log = fopen (thread_log_filename, "w");
/* Store the file pointer in thread-specific data under thread_log_key. */
pthread_setspecific (thread_log_key, thread_log);
write_to_thread_log (wbuf);
/* Do work here... */
return NULL;
}
Linux C 为线程添加各自的日志文件
最新推荐文章于 2024-04-18 18:53:55 发布