func gettid() int {
	return os.Getpid()
}
@brief gettid get pid

@return pid
package gimg
import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"math"
	"os"
	_ "reflect"
	"regexp"
	"runtime"
	"strconv"
	"strings"
)
import "C"  
import "unsafe"
func str_hash(str string) int {
	b := []byte(str)
	c := b[0:3]
	cc := C.CString(string(c))
	defer C.free(unsafe.Pointer(cc))
	d := C.strtol(cc, C.EMPTY, 16)
	d = d / 4
	return int(d)
}
func is_md5(str string) bool {
	regular := `^([0-9a-zA-Z]){32}$`
	regx := regexp.MustCompile(regular)
	return regx.MatchString(str)
}
func delete_file(path string) bool {
	os.RemoveAll(path)
	return true
}
func is_file(str string) bool {
	fmt.Println(str)
	f, err := os.Open(str)
	if err != nil {
		return false
	}
	fi, err := f.Stat()
	if err != nil {
		return false
	}
	if fi.Mode().IsDir() {
		return false
	}
	return true
}
func is_dir(path string) bool {
	fi, err := os.Stat(path)
	if err != nil {
		return false
	}
	if fi.IsDir() {
		return true
	}
	return false
}
func is_img(file_name string) bool {
	return true
}
func get_type(file_name string) (string, error) {
	i := strings.LastIndex(file_name, ".")
	if i == -1 {
		return "", fmt.Errorf("FileName [%s] Has No '.' in It.", file_name)
	}
	ext := file_name[(i + 1):len(file_name)]
	return ext, nil
}
func is_exist(path string) bool {
	_, err := os.Stat(path)
	return err == nil || os.IsExist(err)
}
func mk_dir(path string) bool {
	if is_exist(path) {
		fmt.Printf("Path[%s] is Existed!", path)
		return false
	}
	if err := os.MkdirAll(path, 0755); err != nil {
		if os.IsPermission(err) {
			fmt.Printf("permission is error")
		}
		return false
	}
	return true
}
func is_special_dir(path string) bool {
	if path == "." || path == ".." {
		return true
	}
	return false
}
func get_cpu_cores() int {
	return runtime.NumCPU()
}