示例#1
0
static inline void
s_destroy(mccp_thread_t thd) {
  if (thd != NULL) {
    if (s_is_thd(thd) == true) {
      if (thd->m_wait_lock != NULL) {

        s_wait_lock(thd);
        {
          if (thd->m_op_lock != NULL) {
            (void)mccp_mutex_destroy(&(thd->m_op_lock));
          }
          if (thd->m_cancel_lock != NULL) {
            (void)mccp_mutex_destroy(&(thd->m_cancel_lock));
          }
          if (thd->m_wait_cond != NULL) {
            (void)mccp_cond_destroy(&(thd->m_wait_cond));
          }
          if (thd->m_startup_cond != NULL) {
            (void)mccp_cond_destroy(&(thd->m_startup_cond));
          }
        }
        s_wait_unlock(thd);

        (void)mccp_mutex_destroy(&(thd->m_wait_lock));
      }

      s_delete(thd);

    } else {
      mccp_msg_error("Trying to delete a non-thread pointer (%p) "
                     "as a thread.\n", (void *)thd);
    }
  }
}
示例#2
0
lagopus_result_t
lagopus_hashmap_delete_no_lock(lagopus_hashmap_t *hmptr,
                               void *key, void **valptr,
                               bool free_value) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;

  if (hmptr != NULL &&
      *hmptr != NULL) {

    ret = s_delete(hmptr, key, valptr, free_value);

  } else {
    ret = LAGOPUS_RESULT_INVALID_ARGS;
  }

  return ret;
}
示例#3
0
mccp_result_t
mccp_hashmap_delete_no_lock(mccp_hashmap_t *hmptr,
                            void *key, void **valptr,
                            bool free_value) {
  mccp_result_t ret = MCCP_RESULT_ANY_FAILURES;

  if (hmptr != NULL &&
      *hmptr != NULL) {

    ret = s_delete(hmptr, key, valptr, free_value);

  } else {
    ret = MCCP_RESULT_INVALID_ARGS;
  }

  return ret;
}
int main(int argc, const char * argv[]) {
    
    // 头插法
    SLIST singleLinkList0 = s_init();
    for (int i = 0; i < 5; i++) {
        s_add(singleLinkList0, 0, i);
    }
    s_print(singleLinkList0);
    
    // 尾插法
    SLIST singleLinkList = s_init();
    SNODE* endNode = singleLinkList;
    for (int i = 0; i < 5; i++) {
        SNODE* node = (SNODE*)malloc(sizeof(SNODE));
        node->data = i;
        endNode->next = node;
        endNode = node;
        singleLinkList->data++;
    }
    
    s_print(singleLinkList);
    
    s_add(singleLinkList, 3, 5);
    s_print(singleLinkList);
    
    printf("%d\n", s_get(singleLinkList, 3));
    s_print(singleLinkList);
    
    s_delete(singleLinkList, 1);
    s_print(singleLinkList);
    
    s_clear(singleLinkList);
    s_print(singleLinkList);
    
    return 0;
}