美文网首页
2020-08-30 常用函数记录

2020-08-30 常用函数记录

作者: Wonton_skin | 来源:发表于2020-08-31 00:25 被阅读0次

    1、判断是否为字符、数字

    int isalpha ( int c );  是否为字符
    int isdigit ( int c );   是否为数字
    int isalnum ( int c );  是否为字符或者数字

    2、字符转数字、数字转字符

    int stoi (const string& str, size_t* idx = 0, int base = 10);
    string to_string (int val);

    3、将容器内元素反转

    #include <algorithm> // std::reverse
    std::vector myvector;
    for(int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
    std::reverse(myvector.begin(), myvector.end()); // 9 8 7 6 5 4 3 2 1

    4、信号量(Posix)

    #include <semaphore.h>
    int sem_init(sem_t *sem, int pshared, unsigned int value);
    int sem_wait(sem_t *sem);
    int sem_trywait(sem_t *sem);
    int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
    int sem_post(sem_t *
    sem);
    Link with -pthread.

    5、互斥锁(Posix)

    #include <pthread.h>

    pthread_mutex_t mutex= PTHREAD_MUTEX_INITIALIZER;
    int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
    int pthread_mutex_destroy(pthread_mutex_t *mutex);
    int pthread_mutex_lock(pthread_mutex_t *mutex);
    int pthread_mutex_trylock(pthread_mutex_t *mutex);
    int pthread_mutex_unlock(pthread_mutex_t *mutex);

    PS:多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量

    6、class mutex 互斥锁 (C++11)

    class mutex;
    void lock();    // Member functions
    void unlock(); 
    bool try_lock();

    std::lock_guard 自动释放锁

    在构造函数中进行加锁,析构函数中进行解锁。
    注意:作用域结束自动析构并解锁,不能中途解锁,必须等作用域结束才解锁。

    std::unique_lock 自动释放锁

    unique_lock允许延迟锁定、锁定的有时限尝试、递归锁定、所有权转移和与条件变量一同使用。
    unique_lock具有 lock_guard 的所有功能,同时又具有其他方法,更强灵活方便,其特点如下:
    ->创建时可以不锁定(通过指定第二个参数为std::defer_lock),而在需要时再锁定
    ->可以随时加锁解锁
    ->作用域规则同 lock_grard,析构时自动释放锁
    ->不可复制,可移动
    ->条件变量需要该类型的锁作为参数(此时必须使用unique_lock)

    example链接
    https://www.jianshu.com/p/bc2bbda63735

    PS:c++11中有 mutex (互斥量),有 condition_variable (条件变量),并没有 semaphore (信号量)

    7、

    相关文章

      网友评论

          本文标题:2020-08-30 常用函数记录

          本文链接:https://www.haomeiwen.com/subject/oukesktx.html